找到JVM分配的内存

时间:2013-07-16 12:10:44

标签: java memory-management jvm

我正在寻找一种简单的方法来查明我的计算机上的JVM分配给特定进程的内存量,我尝试过使用VisualVM,但它无法找到该进程。

我应该提一下,它正在运行Windows服务,而不是常规流程。

有什么建议吗?

提前感谢。

3 个答案:

答案 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一起使用可为您提供每个流程的启动参数。

terminal

您可以在此处看到启动参数,它们将告诉您每个进程的内存使用情况。

此命令也应该在Windows上运行,只需用命令提示符替换终端即可。

答案 2 :(得分:0)

JVisualVM应该适合你。在某些特定情况下,该过程未在visualVM中显示。

See some known issues

无法监视本地应用程序(启动时出现错误对话框)说明:VisualVM启动后会立即显示一个错误对话框,指出无法监视本地应用程序。本地运行的Java应用程序显示为(pid ###)。解决方案:如果用户名包含大写字母,则可能会在Windows系统上发生此问题。在这种情况下,username是UserName,但JDK创建的jvmstat目录是%TMP%\ hsperfdata_username。要解决此问题,请退出所有Java应用程序,删除%TMP%\ hsperfdata_username目录并创建新的%TMP%\ hsperfdata_UserName目录。