我有一个java应用程序。问题现在我使用jmap进行堆积,我也在我的应用程序中运行了这些代码。它们给了我不同的值。运行时显示256mb
,这是我指定的初始和最大内存?我想检测是否有任何内存泄漏,但运行时是波动的,而堆中的那个是少量增加?对此有何帮助?
long memory = runtime.totalMemory() - runtime.freeMemory();
System.out.println("\n\nUsed memory is bytes: " + memory);
//Print the jvm heap size.
long heapSize = runtime.totalMemory();
System.out.println("\n\nHeap Size = " + heapSize);
int mb = 1024*1024;
System.out.println("##### Heap utilization statistics [MB] #####");
//Print used memory
System.out.println("Used Memory:" + (runtime.totalMemory() - runtime.freeMemory()) / mb);
//Print free memory
System.out.println("Free Memory:" + runtime.freeMemory() / mb);
//Print total available memory
System.out.println("Total Memory:" + runtime.totalMemory() / mb);
//Print Maximum available memory
System.out.println("Max Memory:" + runtime.maxMemory() / mb);
答案 0 :(得分:1)
我建议使用Visual VM来监视内存使用情况等。
答案 1 :(得分:0)
另外,你可以试试Netbeans profiler。您可以使用netbeans profiler对您的Web /独立应用程序进行概要分析。
我们正在使用netbeans探查器来分析我们的应用程序。用于分析java应用程序的好工具。
检查出来。