我有一些 Java 代码在运行一段时间后抛出内存异常。我调查了 netbeans 分析器,当我执行一项特定操作时,Surviving Generations Metric 会上升。但是,当我重置程序状态(而不是杀死它)时,Surviving Generations Metric 不会减少。
为什么幸存的世代指标没有减少?
我有一些 Java 代码在运行一段时间后抛出内存异常。我调查了 netbeans 分析器,当我执行一项特定操作时,Surviving Generations Metric 会上升。但是,当我重置程序状态(而不是杀死它)时,Surviving Generations Metric 不会减少。
为什么幸存的世代指标没有减少?
您是否看过“幸存的世代指标是什么意思”?
在 1.6 下运行它,并使用 Java VisualVM (jvisualvm)。
选择您的进程,右键单击并选择堆转储。
让它运行一段时间,然后再进行一次堆转储。
然后使用 File > Compare Memory Snapshots 比较两个转储。
我在这里遇到了同样的问题,但仅在我分析 JUnit 测试的情况下——幸存的世代呈线性增长。当我在 main 方法中运行相同的代码时,代码的行为符合预期。