2014-11-04 80 views
-1

我知道存儲分配是將數據代碼映射到主內存中的適當位置。 但爲什麼java中的例子堆棧數據的不同數據的單獨部分存儲在classInformation區域中,堆中的動態(對象)數據,ConstantPool中的字符串數據(通過文字製作時),方法區域中的函數等 因此需要存儲分配只是爲了提供便於訪問以及在存儲在主存儲器中時使我們的代碼更清潔?爲什麼我們需要在編譯器中分配存儲空間

回答

2

首先你的問題應該是 - 爲什麼我們需要JVM中不同的存儲區域?

每次執行(實例)JVM時都有5個不同的存儲區域。

Shared among all threads running in a JVM instance 
Method Area --> Contains information about classes loaded by the JVM. 
Heap --> common area for allocation of memory. Even String pool is part of this space. 

Separate for each Thread 
Java Stacks --> Contains state of Java (not native level) level methods 
PC registers -> Program counter to keep track of Java method execution. 
Native Method Stacks --> Stack for keeping track/state of native calls (methods). 

更多信息herehere

+0

沒有我的問題是特定於編譯器只(有點它JVM特定存儲相關[INFACT每種編程語言需要存儲分配])。我瞭解一些其中數據駐留在Java中,所以我在這裏提到。 – Jack 2014-11-04 06:09:52

+1

@Jack - 然後當編譯器編譯我們的代碼時,請詳細說明/澄清*您的問題 – TheLostMind 2014-11-04 06:11:25

+0

它將我們的代碼加載到主存儲器中,然後將我們程序的各種數據存儲在我們主存儲器的單獨內存區域中?那麼爲什麼編譯器需要存儲數據在獨立的區域。有足夠容易訪問代碼和分離部分的兩個原因以實現更高效清潔代碼 – Jack 2014-11-04 06:16:25

相關問題