基于JVMTI实现Java线程的监控 - 编程入门网
insertElem(&ctx_head,&ctx_tail,thr_hash_code,hash_code,name);
}
}
}
}
测试监控代理 线程监控代理可以用任何 C 语言编译器编译,并以动态连接库的形式加载到 Java 虚拟机中,监控正在运行的 Java 程序。使用下列命令行加载代理库并运行目标 Java 应用程序:
或者:
为了演示对线程切换的监控,JavaThreadPoolApp 这个样例程序实现了一个 Java 线程池,其中涉及到大量的线程状态的切换。这个应用启动的时候会初始化一个线程池,池内初始化两个子线程,并让它们处于 wait 状态;当有客户端程序需要使用线程池中的某个线程时,使用 notify 将池内的某个线程唤醒;使用完毕后,该线程重新进入 wait 状态等待下一次调度。这些线程切换活动都可以被监控代理所监控,并产生如下输出。结合应用程序的相关信息,可以进一步得出 JavaThreadPoolApp 客户端应用程序使用了线程池中的 Thread-60934352 线程并执行了 3068 毫秒。
使用线程监控代理可以实时监控 JVM 中线程运行情况,帮助开发人员诊断多线程应用中可能存在的线程调度问题。 总结 多线程应用程序的开发存在着诸多挑战,例如线程死锁、资源竞争等。因此,开发人员需要一种运行时线程监控工具来协助诊断和跟踪 Java 线程状态的切换。Sun 公司在 JDK 1.5.0 版本中引进了 JVMTI 接口用于实时监控和分析 JVM 运行状态。 本文首先介绍了 JVMTI接口;然后详细分析了 Java 线程模型,并提出了 Java 线程的监控模型;最后基于 JVMTI 接口实现了 Java 线程监控代理,以协助诊断多线程应用中可能存在的线程调度问题。 本文配套源码 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |