【问题标题】:Is the Java .class file stored in JVM memoryJava .class 文件是否存储在 JVM 内存中
【发布时间】:2012-08-30 08:27:46
【问题描述】:

我阅读了 JVM 内存模型,但对以下内容感到困惑:

  1. JVM 是否将 .class 实例存储在其内存中。如果是,那么在哪个地区。
  2. 是不是就像类一加载,JVM就生成了 机器级代码,然后开始执行机器代码 指令,然后只在堆上创建对象 方法区域已填充。
  3. perm gen 等区域存储字节码或机器级别 代码?
  4. 烫发与方法区

非常感谢有关该主题的任何帮助。

谢谢。

【问题讨论】:

    标签: java jvm


    【解决方案1】:

    1) .class 文件将在加载时存储在 permgen 内存区域中。

    2) HEAP 上的对象将在程序运行时创建,当您显式创建时,而不是在加载时。 JVM“惰性”编译方法,即它发出小的存根代替方法的已编译机器代码,这将触发每个方法的编译。这意味着永远不会编译未使用的方法。

    3) perm gen 存储字节代码(.class 文件将被加载),不确定机器级代码。

    【讨论】:

    • @user1649415:您需要通过单击答案旁边的勾号来接受适当的答案。这将激励社区回答您的问题。
    • .class文件和我们调用Class c = Class.forName时生成的实例一样吗?
    • 不,class.forName 将此 .class 加载到内存中。它们是不同的。
    【解决方案2】:

    JVM是否将.class实例存储在其内存中。如果是,那么在哪个区域

    永久代

    是不是一加载类就这样

    无需阅读.class即可加载类

    ,JVM生成机器级代码,然后开始执行机器代码指令

    字节码在一段时间后被解释或可能编译为本机机器码。

    perm gen etc区存放的是字节码还是机器级码?

    两者兼而有之。它们形影不离。

    【讨论】:

      猜你喜欢
      • 2013-08-01
      • 1970-01-01
      • 2016-12-24
      • 2015-06-15
      • 2018-07-11
      • 1970-01-01
      • 2016-05-07
      • 2020-04-01
      相关资源
      最近更新 更多