背景: 我们构建了一个产品,它通过注释和自定义类加载器向Java添加各种功能(事务,基于共享内存的对象持久性,索引和查询,基于集群的高可用性和复制)。这些功能的大部分实现都在C ++库中,这些库可以通过我们的类加载器插入的本机调用来访问。我们的本地人可以被描述为使用CPU,通过互斥或condvar获取阻塞,阻止网络I / O,或者三者的某种组合。本机入口点本身不知道它们是否会阻塞。
问题: JProfiler将在本机中花费的时间报告为CPU时间,并将本机内部的任何线程显示为正在运行。有没有办法让JProfiler知道发生的运行和阻塞的实际组合?
答案 0 :(得分:1)
为应从“Runnable”线程状态中排除的所有本机方法添加方法触发器。在触发器配置的“操作”步骤中,添加“覆盖当前方法的线程状态”触发器操作。您可以将线程状态设置为“等待”,“阻止”或“网络I / O”。