我正在集群上运行一个大型Java应用程序,并且我有很多可用的内存。因此,我计划用一个巨大的最大堆大小启动我的JVM,并查看它是否工作。但是,我需要多次运行它,并且我想知道在运行期间堆实际变得有多大。我知道我可以使用像VisualVM这样的工具来做到这一点,但是如果我不想运行一个基于ui的大型应用程序呢?在我的应用程序终止后,有没有一些参数我可以发送给jvm来获取这种内存统计信息?或者是一个基于命令行的应用程序,可以很容易地做到这一点?
发布于 2011-12-14 18:23:23
jstat就是你要找的东西。它将打印每秒的统计数据(或您指定的任何数据),然后您可以分析输出以找到最大值。
发布于 2011-12-14 18:28:13
您可以在应用程序中执行此操作:
ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();然后对返回的MemoryUsage对象使用getCommitted()、getUsed()和getMax()方法。
发布于 2011-12-14 18:23:49
您需要使用以下内容来分析应用程序:
http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html#LowMemoryDetection
https://stackoverflow.com/questions/8502812
复制相似问题