物理地址 堆的物理地址分配對對象是不連續的。因此性能慢些。在GC的時候也要考慮到不連續的分配,所以有各種演算法。比如,標記 消除,複製,標記 壓縮,分代(即新生代使用複製演算法,老年代使用標記——壓縮) 棧使用的是數據結構中的棧,先進後出的原則,物理地址分配是連續的。所以性能快。 記憶體分別 堆因為是不連 ...
物理地址
堆的物理地址分配對對象是不連續的。因此性能慢些。在GC的時候也要考慮到不連續的分配,所以有各種演算法。比如,標記-消除,複製,標記-壓縮,分代(即新生代使用複製演算法,老年代使用標記——壓縮)
棧使用的是數據結構中的棧,先進後出的原則,物理地址分配是連續的。所以性能快。
記憶體分別
堆因為是不連續的,所以分配的記憶體是在運行期
確認的,因此大小不固定。
棧是連續的,所以分配的記憶體大小要在編譯期
就確認,大小是固定的。
存放的內容
堆存放的是對象的實例和數組。因此該區更關註的是數據的存儲
棧存放:局部變數,操作數棧,返回結果。該區更關註的是程式方法的執行。
PS:
- 靜態變數放在方法區
- 靜態的對象還是放在堆。
程式的可見度
堆對於整個應用程式都是共用、可見的。
棧只對於線程是可見的。所以也是線程私有。他的生命周期和線程相同。