追踪(即查找原因)“超出GC开销限制”错误的最简单方法是什么?
我不认为有好的选择:
-XX:-UseGCOverheadLimit
参数添加到JVM调用。 Java异常告诉我在我的实现中有一些非常低效的东西,我想解决这个问题。我要使用探查器吗?如果是的话,你会建议哪一个?
我应该查看GC日志吗?我已经尝试过这样做,但我对它有一点了解,似乎没有明确的代码指针(说哪些对象正在进行GC)。
有关此错误的问题已经被提出很多问题,但似乎没有人回答这个具体问题。
答案 0 :(得分:0)
开始分析应用的最简单工具
Netbeans带有内置的分析器
Jconsole也可以帮助一点
VisualVm也可以提供一些帮助。
真正棒极了的商业工具是DyanTrace
现在找到修复问题的方法: 虽然可以通过其他方式解决问题。但是以下事情可能会有所帮助 1)您看到的症状可能是在代码中创建了太多短期对象的结果。现在这不是内存泄漏情况,而是为JVM清理太多垃圾。而Jvm未能跟上这一步。您需要检查代码,了解这些对象的创建位置。
2)您可以做的第二件事是在两次GC运行之间定期进行多次堆转储,并在netbeans或您选择的其他工具中比较这些堆转储。你需要在你的应用程序进入这种糟糕的状态之前这样做。这种比较将告诉你堆中增长的内容,并且可能会给你一个指向你的代码的指针。
我希望这有助于解决您的问题。 :)