ENV
tomcat7 jdk1.6
使用JSP尝试:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import ="com.sun.tools.attach.VirtualMachine" %>
<%@ page import ="com.sun.tools.attach.VirtualMachineDescriptor" %>
与
<%
out.print("Number of runtime jvms : "+VirtualMachine.list().size());
for (int i=0; i<VirtualMachine.list().size(); i++) {
VirtualMachineDescriptor vi = VirtualMachine.list().get(i);
out.println("**PID :"+vi.id()+" **DISPLAYNAME:"+vi.displayName());
}
%>
结果
Number of runtime jvms : 0
我希望它不是
0
。有几个正在运行的JVM。谁能给我一些建议?谢谢。 最佳答案
原因在VirtualMachine#list()
的javadoc中进行了描述:
该列表是虚拟机描述符列表的汇总
通过调用所有已安装的listVirtualMachines
方法获得
附加提供程序。如果没有任何已知的Java虚拟机
提供者,然后返回一个空列表。
我添加了粗体格式。VirtualMachine#list()
方法仅返回当前JVM进程已知的正在运行的JVM实例。每个此类过程都通过AttachProvider
的实现来标识。我只能猜测,但我假设调用AttachProvider#providers()
将产生一个空列表。如果是这种情况,请确保在类路径上添加可访问的AttachProvider
的实现。请注意,这些提供程序也必须对ClassLoader
的VirtualMachine
可见。AttachProvider
的示例例如是HotSpotAttachProvider
,它是列出任何HotSpot虚拟机的运行实例的提供程序。
关于java - 如何使用附加API列出当前正在运行的JVM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20216237/