Java堆栈溢出的机制与原理

 我来答
新科技17
2022-10-12 · TA获得超过5904个赞
知道小有建树答主
回答量:355
采纳率:100%
帮助的人:75万
展开全部

  Java堆栈溢出的出现 很让人痛苦的事情 很多时候都无法找到头绪 这里作者通过使用jrockit调用程序才最终发现了问题的所在 在很多情况下 Java堆栈溢出 很有可能是你的代码中用到数组 到你的索引超出范围了

  java lang OutOfMemoryError: Java heap space

  在Java程序运行中可能会报如上的错误 通常是在运行过程中内存占用了没有别释放造成的

  以前可能没法跟踪可能是很痛苦的事情 现在好了 我们有一个调试软件可以用了 在生产环境下使用的jRockit软件进行调试 是Oracle公司出品的

  前两天试用了一下真的很不错

  前阵子有个程序跑 个礼拜左右就会出现Java堆栈溢出 始终找不到头绪 后来使用jrockit才找到问题的出处

  jrockit是可以调试远程程序也可以调试本地程序的

  具体调试步骤

   (一)

  如果是调试本地程序的话 启动jrockit 然后启动本地需要调试的程序 会在左侧工具栏 本地目录下创建一个连接为需要调试的程序 在上面点击右键 就会启动跟踪

  如何跟踪呢 我的办法就是等 在跟踪开始后 进行截图 然后等程序运行一段时间后查找堆增长比较大的并且一直没有释放的变量

  (二)

  然后在上面点击右键 显示分配跟踪

  (三)

  然后找到对应的方法 然后就去找问题吧 看看是不是那个地方有内存一直没有释放啊

  然后说点我自己的小经验 也许是不对的 但是我在我的应用里面确实是有效的

  在经常需要调用的地方将变量设成全局的甚至是静态的 我的操作是设成全局的了 图省事呢 呵呵 因为我的变量时全局都要调用的而且是频繁调用的

  用完的变量一定要记得让它等于null 否则执行gc()貌似是不给回收的

  基本上jrockit跟踪是很强的 都能够找到你的问题所在 要仔细观察 改完程序后记得再重新跟踪下直到没有内存泄露为止

  写完手工

lishixinzhi/Article/program/Java/hx/201311/26094

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式