解決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