解决Grails应用程序中当前PermGen用法的最佳方法是什么?如何检测PermGen空闲内存
我试图做
调用Runtime.getRuntime()freeMemory()的一些图形。
Runtime.getRuntime()。totalMemory();
我还想测量自由PermGen空间。大部分搜索引擎+ Stack Overflow结果都是关于处理PermGenOutOfMemory类似的错误,我只想访问这些统计信息。
解决Grails应用程序中当前PermGen用法的最佳方法是什么?如何检测PermGen空闲内存
我试图做
调用Runtime.getRuntime()freeMemory()的一些图形。
Runtime.getRuntime()。totalMemory();
我还想测量自由PermGen空间。大部分搜索引擎+ Stack Overflow结果都是关于处理PermGenOutOfMemory类似的错误,我只想访问这些统计信息。
只需使用JConsole或VisualVM连接到它。 Theres没有办法让您以编程方式确定应用程序中的PermGen大小。你可以使用MemoryMXBean做简单的内存报告,但坚持使用我提到的工具来获得更详细的图片。
我认为ManagementFactory可能是来源,从列表返回的其中一个池getMemoryPoolMXBeans()应该是PermGen。
我可能在这里错了 - 但我不认为PermGen报道。 –
我想你应该试试这个
public class Main {
public static void main(final String[] args) {
final RuntimeMXBean memMXBean = ManagementFactory.getRuntimeMXBean();
final String prefix = "-XX:MaxPermSize=";
final List<String> jvmArgs = memMXBean.getInputArguments();
String maxPermSize = null;
for (final String jvmArg : jvmArgs) {
if (jvmArg.startsWith(prefix)) {
maxPermSize = jvmArg.substring(prefix.length());
break;
}
}
System.out.println("MaxPermSize is " + maxPermSize);
}
}
也许[链接到HOWTO(http://pulkitsinghal.blogspot.com/2011/04/finding-current-permgen-size-via.html )? –
@tim,好点。我提供了两个文档链接。 –
请参阅我宁愿如果应用程序中有某种方式可以确定它,那样我就可以简单地自动将它推送到数据库进行报告。但是,谢谢你,MemoryMXBean看起来像是朝着正确方向迈出的一步。 – Noxville