Java千百問_07JVM架構(003)_記憶體分配有哪些策略
阿新 • • 發佈:2019-02-15
1、記憶體分配有哪些策略
我們從編譯原理講起,不同的開發環境、開發語言都會有不同的策略。一般來說,程式執行時有三種記憶體分配策略:靜態的、棧式的、堆式的
靜態儲存
是指在編譯時就能夠確定每個資料目標在執行時的儲存空間需求,因而在編譯時就可以給它們分配固定的記憶體空間。
這種分配策略要求程式程式碼中不允許有可變資料結構的存在,也不允許有巢狀或者遞迴的結構出現,因為它們都會導致編譯程式無法計算準確的儲存空間。棧式儲存
棧式儲存分配是動態儲存分配,是由一個類似於堆疊的執行棧來實現的,和靜態儲存的分配方式相反。
在棧式儲存方案中,程式對資料區的需求在編譯時是完全未知的,只有到了執行的時候才能知道,但是規定在執行中進入一個程式模組的時候,必須知道該程式模組所需要的資料區的大小堆式儲存
堆式儲存分配專門負責在編譯時或執行時,無法確定儲存要求的資料結構的記憶體分配。
比如可變長度串和物件例項,堆由大片的可利用塊或空閒塊組成,堆中的記憶體可以按照任意順序分配和釋放。
2、java記憶體分配策略
java的記憶體分配主要是以堆疊為主,具體如下: