JVM attach & ASM

ASM3.0指南翻译.pdf 下载

Sun JVM Attach API是Sun JVM中的一套非标准的可以连接到JVM上的API,从JDK6开始引入,除了Solaris平台的Sun JVM支持远程的Attach,在其他平台都只允许Attach到本地的JVM上。

一、Sun JVM Attach API功能上非常简单,仅提供了如下几个功能:

  • 列出当前所有的JVM实例描述(如JDK工具jps吗,列出所有的java进程的pid)
  • Attach到其中一个JVM上,建立通信管道
  • 让目标JVM加载Agent

Java Instrutment

Java Instrutment提供了: 一个是允许在类加载之前,修改类字节(ClassFileTransformer)(JDK5中开始提供,即使随JVM启动的Agent),另外一个是在类加载之后,触发JVM重新进行类加载(JDK6中开始提供,用于JVM启动之后通过Attach去加载Agent)。Visual VM的性能剖析、JConsole支持Attach到进程上进行监控,都是通过这种方式来做的。除了这两个功能外,JDK 6中还提供了动态增加BootstrapClassLoader/SystemClassLoader的搜索路径、对Native方法进行instrutment。

asm提供了一个eclipse plugin,更新地址为:http://andrei.gmxhome.de/eclipse/

它可以对比出修改前后的class的差异,并自动翻译为asm代码

btrace:

是一款就能在不改动当前程序的情况下,运行时的去监控Java程序的执行状况,例如可以做到内存状况的监控、方法调用的监控等等。实现机制是attach api + asm + instrumentation。Java Instrutment一个是允许在类加载之前,修改类字节,从JDK5中开始提供,随JVM启动的Agent,另外一个是在类加载之后,触发JVM重新进行类加载,JDK6中开始提供,用于JVM启动之后通过Attach去加载Agent。

你可能感兴趣的:(JVM)