我正在寻找一种简单的方法,以查找JVM在我的计算机上为特定进程分配了多少内存。我尝试使用VisualVM,但它无法找到该进程。需要说明的是,这是运行在Windows服务中,而不是常规进程。有什么建议吗?提前感谢您。
Java运行环境(JRE)提供了一个称为 jps
的命令,您可以使用它来查看所有正在运行的Java进程。使用 jps -v
命令,您可以查看每个进程的启动参数。
在这里,您可以查看启动参数,从而确定每个进程的内存使用情况。
这个命令也可以在Windows上运行,只需将终端替换为命令提示符即可。
// 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(刚刚测试过)!
JVisualVM应该适用于您。在特定情况下,进程可能不会在visualVM中显示。
本地应用程序无法被监视(启动时出错对话框)描述:在VisualVM启动后立即显示一个错误对话框,指出本地应用程序无法被监视。本地运行的Java应用程序显示为(pid ###)。 解决方案:如果用户名包含大写字母,则在Windows系统上可能会出现此问题。在这种情况下,用户名是UserName,但JDK创建的jvmstat目录是%TMP%\hsperfdata_username。为了解决这个问题,请退出所有Java应用程序,删除%TMP%\hsperfdata_username目录,并创建新的%TMP%\hsperfdata_UserName目录。