剖析Java应用程序中内存使用情况的最佳方法?
问题内容:
我意识到之前在SO上已经问过类似的问题,但是让我准确描述一下我需要做的事情:
我有一组运行命令行Java应用程序的测试,我想向它们添加内存配置文件。我看到的一个选择是将代码(可能使用第三方工具/库)添加到应用程序中,以提供内存快照。另一种选择是使用第三方工具为我管理/安装我的应用程序和JVM(理想情况下不需要我更改代码)。我在想类似Valgrind的东西,但是对于Java。如果可能的话,也要开源。
我真正想做的是设置内存测试,以便定期监控我的内存使用情况(假设每秒一次),并将其转储到文本文件中。这样,我将能够查看内存使用率是否随时间波动/增加/减少。我还将能够计算最大和最小峰值。
这里有人做过这样的事情吗?
提前致谢。
问题答案:
使用JProfiler之类的东西,您要做的就是向JVM添加某些参数。它使用JVMTI。
我认为您应该阅读分析器,以及他们可以为您做些什么。我还建议阅读JVMTI。
JVMTM工具接口(JVM TI)是供工具使用的新的本机编程接口。它提供了一种检查状态并控制Java虚拟机(JVM)中运行的应用程序执行的方式。JVM
TI支持需要访问JVM状态的全部工具,包括但不限于:性能分析,调试,监视,线程分析和覆盖率分析工具。
注意:JVM
TI取代了Java虚拟机探查器接口(JVMPI)和Java虚拟机调试接口(JVMDI)。JVMPI和JVMDI将在J2SETM的下一个主要版本中删除。