簡體   English   中英

JVM是否在其內存中存儲完整的字節碼?

[英]Does JVM stores complete bytecode in its memory?

正如我對SO問題的回答中所提到的那樣, permgen空間具有方法的字節碼。

java類具有什么? 字段方法(也為構造方法) 方法是構成代碼主要部分的部分。

我真的很困惑,為什么將幾乎完整的.class文件(字節碼)加載到JVM的內存中(如果為true)。

有人可以澄清嗎?

JVM將整個類加載到內存中,因為它構成了單個可執行單元。 在本機環境中,整個可執行文件(例如.exe)被加載,或者整個動態庫(.dll,.so,.dynlib)作為一個單元加載到內存中。 與此相比,Java實際上更加有效,因為僅加載了另一個執行類直接引用的類。

例如:

class A {
    public A() {
    }
}

class B {
   public void method1() {
      // do something
   }

   public void method2() {
      A a = new A();
   }
}

即使加載了類B,並且即使類B引用了類A,但JVM也不會加載類A。 如果 B.method2() ,則只有在那時JVM才會解析類A。

加載類后,“卸載”的唯一方法是丟棄執行加載的ClassLoader。 即便如此,與許多其他語言和運行時相比,這在運行時提供了更大的靈活性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM