哪一个指示java应用程序的确切内存使用情况



我有一个java应用程序。现在我使用jmap处理了一堆问题,并且在我的应用程序中也运行了这些代码。两者都给了我不同的价值观。运行时显示出256mb,这是我指定的初始和最大内存?我想检测是否存在任何内存泄漏,但运行时在波动,而堆中的内存则在少量增加?有什么帮助吗?

long memory = runtime.totalMemory() - runtime.freeMemory();
System.out.println("nnUsed memory is bytes: " + memory);
//Print the jvm heap size.
long heapSize = runtime.totalMemory();
System.out.println("nnHeap 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);

我建议使用Visual VM来观察内存使用情况等。

您也可以尝试Netbeans探查器。您可以使用netbeans profiler来评测您的web/独立应用程序。

我们正在将netbeans探查器调整为应用程序中的评测。用于评测java应用程序的好工具。

看看吧。

https://profiler.netbeans.org/

http://wiki.netbeans.org/FaqProfilerAttachRemoteServer

最新更新