java的垃圾回收分為
三個區域新生代 老年代 永久代
一個對象實例化時 先去看伊甸園有沒有足夠的空間
如果有 不進行垃圾回收 ,對象直接在伊甸園存儲.
如果伊甸園內存已滿,會進行一次minor gc
然后再進行判斷伊甸園中的內存是否足夠
如果不足 則去看存活區的內存是否足夠.
如果內存足夠,把伊甸園部分活躍對象保存在存活區,然后把對象保存在伊甸園.
如果內存不足,向老年代發送請求,查詢老年代的內存是否足夠
如果老年代內存足夠,將部分存活區的活躍對象存入老年代.然后把伊甸園的活躍對象放入存活區,對象依舊保存在伊甸園.
如果老年代內存不足,會進行一次full gc,之后老年代會再進行判斷 內存是否足夠,如果足夠 同上.
如果不足 會拋出OutOfMemoryError.
GC雖然可以進行內存空間的釋放,但同時頻繁的GC一定會影響性能,GC發生的頻率越低,你的系統就越高效.
支持原創::https://blog.csdn.net/jidong2622/article/details/78147364
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!