我不太明白通过attach api“附加”到另一个虚拟机意味着什么.我读过每个java程序都在自己的虚拟机中运行(见here).那么内存中究竟发生了什么,一个程序“附加”到另一个jvm进程,以便它可以访问其他虚拟机数据,如MBeanServer?一个虚拟机的字节码是否实际调用了对另一个虚拟机的特殊请求以获取访问内存的权限,或者是第一个从内存中卸载的虚拟机,然后这两组代码共享一个虚拟机?如果有人能够从内存观点/虚拟机协商步骤(如果这就是所谓的内容)中澄清这个附件的细节,我将不胜感激.谢谢!
解决方法:
解释一个jvm附加到另一个jvm的场景的完美示例是使用Java Profilers. Profilers基本上用于获取另一个jvm的性能分析的洞察力.正在检查的应用程序附加到探查器jvm,它会对堆/堆栈进行内省,以确定有关所检查的jvm的不同信息.
标准分析器jvisualvm广泛使用JVM TI API,例如执行和监视垃圾收集. Java Management Extensions(JMX)用作公共通信层.