我正在尝试动态监测Java堆大小。有人知道如何获取运行代码过程中使用的最大内存吗?Runtime.maxMemory()
是否可以实现这个功能?谢谢。
我正在尝试动态监测Java堆大小。有人知道如何获取运行代码过程中使用的最大内存吗?Runtime.maxMemory()
是否可以实现这个功能?谢谢。
jstat -gc <pid> <time> <amount>
jstat -gc `jps -l | grep weblogic\.Server | awk {'print $1'}` 1000 3
每秒采集3个样本 点击这里了解更多
如果你愿意,你可以使用JConsole来对你的应用进行性能分析并可视化查看许多值。
http://docs.oracle.com/javase/6/docs/technotes/tools/share/jconsole.html
启动你的应用:
-Dcom.sun.management.jmxremote
当你启动/bin/jconsole.exe时,你的应用程序将可供选择。
我还想补充一点,jmap -heap <PID>
就可以解决问题;假设你是运维人员并且需要知道Java进程使用了多少堆内存。我无法确定你的问题是编程方面的还是运维方面的。
JvmTop 0.4.1 alpha amd64 8 cpus, Linux 2.6.32-27, load avg 0.12
http://code.google.com/p/jvmtop
PID MAIN-CLASS HPCUR HPMAX NHCUR NHMAX CPU GC VM USERNAME #T DL
3370 rapperSimpleApp 165m 455m 109m 176m 0.12% 0.00% S6U37 web 21
27338 WatchdogManager 11m 28m 23m 130m 0.00% 0.00% S6U37 web 31
19187 m.jvmtop.JvmTop 20m 3544m 13m 130m 0.93% 0.47% S6U37 web 20
16733 artup.Bootstrap 159m 455m 166m 304m 0.12% 0.00% S6U37 web 46
http://www.opnet.com/solutions/application_performance/appinternals-xpert.html