【问题标题】:Does JVM loads all used classes when loading a particular class?JVM 在加载特定类时会加载所有使用的类吗?
【发布时间】:2011-04-18 11:53:12
【问题描述】:

当 JVM 加载类 A 时,它会加载 A 中使用的所有类吗?
而且我想知道导入声明是否对加载过程很重要?

JLS 的链接将不胜感激。

【问题讨论】:

    标签: java classloader jls


    【解决方案1】:

    导入和类加载无关。前者只是节省了输入:它允许您在代码中使用短类名而不是完全解析的类名。

    类在第一次使用时由JVM 加载。

    【讨论】:

    • 我是否正确理解了 JLS,它取决于实现,将应用哪种分辨率(静态或惰性)?
    • 我不知道静态分辨率是什么意思;我一直认为类是在需要时加载的。这对我来说是“懒惰”。
    • 我参考了您提供的链接中的条款。 =)
    【解决方案2】:

    import 只是帮助程序员。编译类文件时,变量的限定名称存储在 .class 文件中,因此 JVM 知道它需要加载什么。

    http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.html#21410 第2.17.1节“虚拟机启动”

    【讨论】:

      【解决方案3】:

      导入类是用户和编译器的标志。使用 import 不会加载类。 JVM 仅在类被引用时才加载类,如果类不是必需的,则该类不会在编译时或运行时加载它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多