3.1 概述
程序計數(shù)器、虛擬機棧、本地方法棧3個區(qū)域隨線程而生,隨線程而滅奋岁;
棧中的棧幀隨著方法的進入和退出而有條不紊地執(zhí)行著出棧和入棧操作。
每一個棧幀中分配多少內(nèi)存基本上是在類結(jié)構(gòu)確定下來時就已知的荸百,因此這幾個區(qū)域的內(nèi)存分配和回收都具備確定性闻伶,在這幾個區(qū)域內(nèi)就不需要過多考慮回收的問題,因為方法結(jié)束或者線程結(jié)束時管搪,內(nèi)存自然就跟隨著回收了。而Java堆和方法區(qū)則不一樣铡买,一個接口中的多個實現(xiàn)類需要的內(nèi)存可能不一樣更鲁,一個方法中的多個分支需要的內(nèi)存也 可能不一樣,我們只有在程序處于運行期間時才能知道會創(chuàng)建哪些對象奇钞,這部分內(nèi)存的分配 和回收都是動態(tài)的澡为,垃圾收集器所關(guān)注的是這部分內(nèi)存,本章后續(xù)討論中的“內(nèi)存”分配與回 收也僅指這一部分內(nèi)存景埃。