Java 如何调试JVM资源加载?
要调试JVM中的类加载,我们可以使用paramJava 如何调试JVM资源加载?,java,debugging,jvm,profiling,classloader,Java,Debugging,Jvm,Profiling,Classloader,要调试JVM中的类加载,我们可以使用param-verbose:class,但是。。。有人知道如何调试资源加载(例如属性文件)吗?我想您需要看看如何使用探查器。或者使用仪器接口的东西 不确定它有多稳定,但有一个,这是DTrace的Java版本 BTrace是Java平台的安全、动态跟踪工具。 BTrace可用于动态跟踪正在运行的Java程序。BTrace动态地检测目标应用程序的类以注入跟踪代码(“字节码跟踪”)。跟踪代码用Java编程语言表示 如果在开发计算机上执行此操作,并且事件数(加载的资源
-verbose:class
,但是。。。有人知道如何调试资源加载(例如属性文件)吗?我想您需要看看如何使用探查器。或者使用仪器接口的东西
不确定它有多稳定,但有一个,这是DTrace的Java版本
BTrace是Java平台的安全、动态跟踪工具。
BTrace可用于动态跟踪正在运行的Java程序。BTrace动态地检测目标应用程序的类以注入跟踪代码(“字节码跟踪”)。跟踪代码用Java编程语言表示
如果在开发计算机上执行此操作,并且事件数(加载的资源)不太频繁,也可以在调试器中设置断点。资源以
URL
s的形式提供。因此,我想在“纯”Java中这样做:安装一个自定义的ClassLoader
,它将URL
s复制到一个带有自定义URLStreamHandler
的版本中。将监控代码放入流处理程序并转发到原始代码。在Linux环境中,您可以尝试:
lsof -p <jvm pid>
lsof-p
它将为您提供一个列表,其中包含与指定pid关联的程序所使用的描述符
您可以使用它来检测执行加载的类加载器类
对于Sun JVM,我建议使用以下包含模式来跟踪适当的类:
- 类加载器
- URLClassPath
- 装载机