2012-09-05 70 views
4

了Java .class文件我讀了JVM的內存模型,並與如下糊塗了:是存儲在JVM內存

  1. 是否JVM存儲到內存中。類實例。如果是,那麼在哪個區域。
  2. 它是否像加載類一樣,JVM生成 機器級代碼,然後開始執行機器代碼 指令,然後只有對象在堆上創建和 方法區域填充。
  3. perm gen等區域存儲字節碼或機器級別碼 ?
  4. 燙髮根VS方法面積

我會很感激的話題的任何幫助。

謝謝。

回答

8

1).class文件將在加載時存儲在permgen內存區域。

2)HEAP中的對象將在程序運行時創建,當您明確創建時,而不是加載。 JVM編譯方法'lazily',即它發出小的存根來代替將觸發每個方法編譯的方法的編譯機器代碼。這意味着未使用的方法永遠不會被編譯。

3)perm gen存儲字節代碼(.class文件將被加載),不確定機器級代碼。

+0

+1它只讀取一次。 –

+0

@ user1649415:您需要通過點擊答案旁邊的勾號來接受適當的答案。這將激勵社區回答你的問題。 – kosa

+0

.class文件是否與我們調用Class c = Class.forName時生成的實例相同? – user1649415

2

是否JVM存儲的.class實例在其memory.If是,那麼在哪些領域

PermGen的

只要載入類是像

您可以在不讀取.class的情況下加載課程

,JVM生成機器級代碼,然後開始執行機器碼指令

字節碼被解釋或潛在編譯爲本機機器代碼一段時間之後。

燙髮等區域存儲字節代碼或機器級代碼?

兩者。它們是不可分割的。

+0

「永久代」中的「permgen」? – PypeBros

+1

@sylvainulg:是的。那是對的。 – kosa