JVMTI(JVM Tool Interface)是Java虚拟机提供的一整套后门。通过这套后门可以对虚拟机方方面面进行监控,分析。甚至干预虚拟机的运行。
JVMTI(JVM Tool Interface) , 是Java 虚拟机所提供的native编程接口。 JVMTI可以提供性能分析、debug、内存管理、线程分析等功能。
怎么使用?
a、JVMTI是一套本地编程接口。可以使用底层c/c++ 实现一个Agent的方式来使用JVMTI,设置一些回调函数,来实现我们的逻辑。从jdk1.5后,可以使用Java的Instrumentation接口(java.lang.instrument)来编写Agent。
b、采用java attach的方式,在程序运行时动态加载我们的逻辑。(jmap,jps,jstack等 jdk自带的工具都是通过这种方式实现的。)
使用java实现agent需要遵循JVMTI的规范.
jecko 是一款java应用线上分析诊断工具, 自主研发,支持jdk1.6+以上的应用。
提供了以下便捷:
现有功能:
1、火焰图:快速定位应用热点,生成火焰图
2、JVM详情:监控JVM的实时运行状态
3、函数追踪:函数内部的调用栈函数分析
4、线程分析:获取线程堆栈数据
后续会有针对在线诊断方面更多的功能,旨在帮助研发解决在线诊断的痛点问题。
产品已经在jdos 环境上线,欢迎使用。