我正在寻找一种简单的方法来查明我的计算机上的JVM分配给特定进程的内存量,我尝试过使用VisualVM,但它无法找到该进程。
我应该提一下,它正在运行Windows服务,而不是常规流程。
有什么建议吗?
提前感谢。
答案 0 :(得分:6)
我在android中使用(如果你想知道一种编程方式):
// get the total memory for my app
long total = Runtime.getRuntime().totalMemory();
// get the free memory available
long free = Runtime.getRuntime().freeMemory();
// some simple arithmetic to see how much i use
long used = total - free;
System.out.println("Used memory in bytes: " + used);
适用于PC(刚刚测试过)!
答案 1 :(得分:4)
有一个名为jps
的JRE附带的命令,您可以使用该命令查看所有正在运行的java进程。将jps
与-v
一起使用可为您提供每个流程的启动参数。
您可以在此处看到启动参数,它们将告诉您每个进程的内存使用情况。
此命令也应该在Windows上运行,只需用命令提示符替换终端即可。
答案 2 :(得分:0)
JVisualVM应该适合你。在某些特定情况下,该过程未在visualVM中显示。
无法监视本地应用程序(启动时出现错误对话框)说明:VisualVM启动后会立即显示一个错误对话框,指出无法监视本地应用程序。本地运行的Java应用程序显示为(pid ###)。解决方案:如果用户名包含大写字母,则可能会在Windows系统上发生此问题。在这种情况下,username是UserName,但JDK创建的jvmstat目录是%TMP%\ hsperfdata_username。要解决此问题,请退出所有Java应用程序,删除%TMP%\ hsperfdata_username目录并创建新的%TMP%\ hsperfdata_UserName目录。