ENV tomcat7 jdk1.6
使用JSPTRIED :
<%@ 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。谁能给我一些建议?感谢。
答案 0 :(得分:0)
原因在VirtualMachine#list()
的javadoc中描述:
该列表是虚拟机描述符列表的聚合 通过调用所有已安装的
listVirtualMachines
方法获得 附加提供商。如果没有任何已知的Java虚拟机 然后返回一个空列表。
我添加了大胆的格式。
VirtualMachine#list()
方法仅返回当前JVM进程已知的正在运行的JVM实例。每个这样的过程都由AttachProvider
的实现来识别。我只能猜测,但我认为调用AttachProvider#providers()
将产生一个空列表。如果是这种情况,请确保在类路径中添加AttachProvider
可访问的实现。请注意,这些提供商也必须对ClassLoader
的{{1}}可见。
VirtualMachine
的示例是HotSpotAttachProvider
,它是列出正在运行任何HotSpot虚拟机实例的提供商。