在Java应用程序中分析内存使用情况的最佳方法?

Mat*_*att 24 java memory profile profiling

我知道在此之前已经有人问过类似的问题,但是让我准确描述一下我需要做什么:

我有一组运行命令行java应用程序的测试,我想为它们添加内存分析.我看到的一个选项是向我的应用程序添加代码(可能使用第三方工具/库),这将提供内存快照.另一种选择是使用第三方工具来管理/检测我的应用程序和JVM(理想情况下不需要我更改我的代码).我想的是像Valgrind这样的东西,但是对于Java来说.如果可能的话也是开源的.

我真正想要做的是设置内存测试,以便定期监视我的内存使用情况,比方说每秒,然后转储到文本文件中.这样我就可以看到内存使用量是否会随着时间的推移而振荡/增加/减少.我还能够计算最大和最小峰值.

有人在这做过这样的事吗?

提前致谢.

Pet*_*r D 16

使用像JProfiler这样的东西你需要做的就是在JVM中添加某些参数.它使用JVMTI.

我认为你应该阅读有关剖面线的信息以及它们能为你做些什么.我还建议阅读JVMTI.

JVMTM工具接口(JVM TI)是一种新的本机编程接口,供工具使用.它提供了一种检查状态和控制Java虚拟机(JVM)中运行的应用程序执行的方法.JVM TI支持需要访问JVM状态的全部工具,包括但不限于:分析,调试,监视,线程分析和覆盖率分析工具.

注意:JVM TI取代了Java虚拟机概要分析程序接口(JVMPI)和Java虚拟机调试接口(JVMDI).JVMPI和JVMDI将在J2SETM的下一个主要版本中删除.


Rad*_*Rad 6

Yourkit也有一个非常好的剖析器