跳过标题
上一页
上一页
 
下一页
下一页

研究详细输出中的堆使用量

Java 应用程序中的内存泄漏的早期征兆是堆使用量增加。年老代空间垃圾收集 (年老代收集) 会从堆中删除所有未使用的对象。通常,每次年老代收集之后的堆使用量应该在一段时间内相当平稳,但如果应用程序错误地使越来越多的对象保持活动,年老代收集之后的堆使用量就会随着每次垃圾收集而增加。

监视堆使用量的一种简单方法是查看详细的垃圾收集输出。为此,只需使用 -Xverbose:gc 选项启动 JRockit JVM,然后监视一段时间的输出,如以下输出示例所示:



[memory ] 2.703-2.729: GC 262144K->3904K (262144K), 25.857 ms
[memory ] 3.901-3.940: GC 262144K->10820K (262144K), 38.835 ms
[memory ] 4.857-4.913: GC 262144K->19606K (262144K), 56.011 ms
[memory ] 5.780-5.878: GC 262144K->28424K (262144K), 97.406 ms

箭头 (->) 后面的值是在执行垃圾收集后的堆使用量。上述示例仅包含年老代收集。在此示例中,您可以清楚地看到在执行垃圾收集后堆使用量正在稳定地增长。

不过,此方法在监视较长时段的堆使用量时很麻烦。管理控制台提供了一些图形工具,它们可用于监视随时间变化的堆使用量,如研究管理控制台中的堆使用量中所述。