Java详细类加载

Java详细类加载,java,jvm,classloader,Java,Jvm,Classloader,我试图列出Java类加载器加载我的类的顺序。如果我使用-verbose参数,它将列出它加载的每个接口/类,包括大量的接口,如可序列化、异常等。是否有办法调整此输出,使其仅显示在我定义的主要方法的类中加载的类?我想您最好的选择是执行以下操作: 一旦main方法启动并在结束之前输出一些固定文本 通过管道将详细输出传输到文件中 使用less或grep之类的方法来查找从main方法加载到两个标记之间的类 这里有一个类似的问题和一些答案: 您是否尝试过-verbose:class?下面是一个sed表达

我试图列出Java类加载器加载我的类的顺序。如果我使用
-verbose
参数,它将列出它加载的每个接口/类,包括大量的接口,如可序列化、异常等。是否有办法调整此输出,使其仅显示在我定义的主要方法的类中加载的类?

我想您最好的选择是执行以下操作:

  • 一旦
    main
    方法启动并在结束之前输出一些固定文本
  • 通过管道将详细输出传输到文件中
  • 使用less或grep之类的方法来查找从main方法加载到两个标记之间的类
这里有一个类似的问题和一些答案:


您是否尝试过
-verbose:class

下面是一个sed表达式,它将解析java-verbose:class的输出,以生成成对的已加载类名及其jar文件。您可以进一步通过一个排序管道获得唯一的jar文件。比如说,

java -verbose:class -version 2>/dev/null |
  sed -ne 's/\[Loaded \(.\+\) from \(.\+\)\]/\2/p' | 
  sort -u
输出

/usr/local/jdk1.7.0_67/jre/lib/rt.jar