1. 程式人生 > >Java千百問_07JVM架構(003)_記憶體分配有哪些策略

Java千百問_07JVM架構(003)_記憶體分配有哪些策略

1、記憶體分配有哪些策略

我們從編譯原理講起,不同的開發環境、開發語言都會有不同的策略。一般來說,程式執行時有三種記憶體分配策略:靜態的棧式的堆式的

  • 靜態儲存
    是指在編譯時就能夠確定每個資料目標在執行時的儲存空間需求,因而在編譯時就可以給它們分配固定的記憶體空間。
    這種分配策略要求程式程式碼中不允許有可變資料結構的存在,也不允許有巢狀或者遞迴的結構出現,因為它們都會導致編譯程式無法計算準確的儲存空間。

  • 棧式儲存
    棧式儲存分配是動態儲存分配,是由一個類似於堆疊的執行棧來實現的,和靜態儲存的分配方式相反
    在棧式儲存方案中,程式對資料區的需求在編譯時是完全未知的,只有到了執行的時候才能知道,但是規定在執行中進入一個程式模組的時候,必須知道該程式模組所需要的資料區的大小

    才能分配其記憶體。和我們在資料結構中所熟知的棧一樣,棧式儲存分配按照先進後出的原則進行分配。

  • 堆式儲存
    堆式儲存分配專門負責在編譯時或執行時無法確定儲存要求的資料結構的記憶體分配。
    比如可變長度串物件例項,堆由大片的可利用塊或空閒塊組成,堆中的記憶體可以按照任意順序分配和釋放。

2、java記憶體分配策略

java的記憶體分配主要是以堆疊為主,具體如下: