【问题标题】:Java verbose class loadingJava 详细类加载
【发布时间】:2012-04-19 14:27:50
【问题描述】:

我正在尝试列出 Java 类加载器加载我的类的顺序。如果我使用-verbose 参数,它将列出它加载的每个接口/类,包括大量接口,例如可序列化、异常等。有没有办法调整这个输出,所以它只显示在我的主类中加载了哪些类方法定义了吗?

【问题讨论】:

    标签: java jvm classloader


    【解决方案1】:

    我猜你最好的办法是做以下事情:

    • 在您的 main 方法开始后和结束之前输出一些固定文本。
    • verbose 输出传送到文件中
    • 使用 lessgrep 之类的东西从 main 方法中查找加载在两个标签之间的类。

    这里有一个类似的问题和一些答案:Is there a way to get which classes a ClassLoader has loaded?

    你试过-verbose:class吗?

    【讨论】:

    【解决方案2】:

    这是一个 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
    

    【讨论】:

      猜你喜欢
      • 2012-12-16
      • 1970-01-01
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多