如何调试JVM资源加载?

时间:2009-04-15 08:33:27

标签: java debugging jvm profiling classloader

要在JVM中调试类加载,我们可以使用参数-verbose:class,但是......任何人都知道如何调试资源加载(例如属性文件)?

5 个答案:

答案 0 :(得分:3)

我想您需要查看使用分析器。或者使用仪器界面的东西。

不确定它有多稳定,但有BTrace,这是DTrace的Java版本。

  

BTrace是Java平台的安全动态跟踪工具。   BTrace可用于动态跟踪正在运行的Java程序。 BTrace动态检测目标应用程序的类以注入跟踪代码(“字节码跟踪”)。跟踪代码用Java编程语言表示。

如果您在开发计算机上执行此操作,并且事件数(正在加载的资源)不是太频繁,您也可以在调试器中设置断点。

答案 1 :(得分:2)

资源以URL提供。因此,我想在“纯”Java中执行此操作:安装将ClassLoader复制到具有自定义URL的版本的自定义URLStreamHandler。将监控代码放在流处理程序中并转发到原始数据库。

答案 2 :(得分:2)

您可以使用InTrace来检测进行加载的Classloader类。

对于Sun JVM,我建议使用以下Include模式来跟踪适当的类:

  • 类加载器
  • URLClassPath
  • 装载机

答案 3 :(得分:1)

在Linux环境中,您可以尝试:

lsof -p <jvm pid>

它将为您提供一个列表,其中包含与指定pid关联的程序使用的描述符。

More Info

答案 4 :(得分:1)

存在一些调试类加载问题的技术。以下是来自 JRebel创作者的优秀幻灯片,总结了这些技巧:Do you really get class loaders?