基本不做回收的區域
?Java運行時內存區域中,程序計數器
、虛擬機棧
、本地方法棧
這3個區域基本不會被GC。因為這3個區域隨線程而生,隨線程而亡,棧中棧幀分配對少內存在類結構確定下來的時候就已知了(大體編譯期占用多少內存已知),因此這幾個區域的內存分配和回收具備確定性。
回收區域
?Java堆
和方法區
。
這部分區域對象在運行時才知道要分配什么對象,分配多少對象,分配多大對象,因此這部分的分配和回收是動態的。
?Java運行時內存區域中,程序計數器
、虛擬機棧
、本地方法棧
這3個區域基本不會被GC。因為這3個區域隨線程而生,隨線程而亡,棧中棧幀分配對少內存在類結構確定下來的時候就已知了(大體編譯期占用多少內存已知),因此這幾個區域的內存分配和回收具備確定性。
?Java堆
和方法區
。
這部分區域對象在運行時才知道要分配什么對象,分配多少對象,分配多大對象,因此這部分的分配和回收是動態的。