在JDK中com.sun.tools.attach.VirtualMachine提供了一些从外部进程attach到jvm上,并执行一些操作的功能。VirtualMachine的子类HotSpotVirtualMachine表示hotspot的虚拟机,下面的WindowsVirtualMachine是在windows平台下的实现。它提供了以下功能:
1. public void loadAgentLibrary(String agentLibrary, String options)
载入一个dll的agent
2. public void loadAgent(String agent, String options)
载入java的agent,官方名字叫做 JPLIS agent ( Java Programming Language Instrumentation Services),并且调用agentmain方法
3. public InputStream remoteDataDump(Object … args)
用于dumptreahd,jstack会用到
4. public InputStream dumpHeap(Object … args)
用于堆的dump,jmap会用到
5. public InputStream heapHisto(Object … args)
堆的柱状图的dump ,jmap会用到它
6. public InputStream setFlag(String name, String value)
设置一些标记的值,一些简单的可以,复杂的不能生效的,jinfo会用到它
7. public InputStream printFlag(String name)
打印标记的值,jinfo需要的。
VirtualMachine所支持的操作