簡體   English   中英

java類住在哪里?

[英]Where do java class live?

我知道Java對象,實例變量已創建並存在於堆中,而局部變量和對象引用已創建並存在於堆棧中。

那么“階級”本身在哪里生活呢?

我之所以這樣問是因為,當您創建靜態變量時,會使用類名來調用它們,例如

Math.round()

創建Math類時,它在內存中的位置(堆或堆棧)

迦特

堆的Permgen(永久代)區域...

Java類位於Permanent Generation heap 。內部字符串池也存儲在此處。

永久世代堆包含:

  • 類的方法(包括字節碼)
  • 類的名稱(在永久代中也以指向字符串的對象的形式)
  • 常量池信息(從類文件中讀取數據,有關所有詳細信息,請參閱JVM規范的第4章)。
  • 與類關聯的對象數組和類型數組(例如,包含對方法的引用的對象數組)。
  • JVM創建的內部對象(例如,java / lang / Object或java / lang / exception)
  • 編譯器(JIT)用於優化的信息

類在PermGen空間(即堆)中加載

所有類都加載在PermGen空間中

您可以在此處閱讀有關永久代(存儲類,方法等的更多信息)的更多信息:

http://blogs.oracle.com/jonthecollector/entry/presenting_the_permanent_generation

但是請注意,當您調用靜態方法時,Java實際上是在幕后創建對象的內部實例,因此您實際上是在對象的“幕后”全局實例上調用該方法。

暫無
暫無

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

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