Stack / Heap
Stack
堆疊、靜態記憶體配置
具有 Last in First out - LIFO (後進先出) 的資料組織方式。
有存取速度快的特點,且生命週期規律,適合做可預測性資料的容器。
每個 Thread 具有自己的 Stack,彼此間 Stack 互相獨立。
通常是 Value Type (實質類別) [ 123 、456L ]、Reference Type (參考類別)[ 0x1234], 儲存的是資料在 Heap 中的記憶體位址。
Heap
堆積、動態記憶體配置
屬於 Process 中的共享資料,意即程式所需的資料。
即創建 instance(實例)時,會把資料放在 Heap,所以就算是不同 Thread 建立, 同 Process 底下也可以進行讀取,創建完成時會把記憶體位置存放在 Stack。
參考資料
https://blog.marksylee.com/2016/09/14/java-interview-02-jvm-stack-heap/ https://nwpie.blogspot.com/2017/05/5-stack-heap.html https://medium.com/@yauhsienhuang/stack-%E8%88%87-heap-%E6%9C%89%E4%BD%95%E5%B7%AE%E5%88%A5-acdcc11263a0
Last updated
Was this helpful?