博學(xué)谷Java工程師進(jìn)階
2023-08-03 20:07 作者:bili_93891819972 | 我要投稿
Java的垃圾回收機(jī)制:Java的內(nèi)存管理實(shí)際上就是對(duì)象的管理,其中包括對(duì)象的分配和釋
放。分配對(duì)象使用new關(guān)鍵字;釋放對(duì)象時(shí),只要將對(duì)象所有引用賦值為null即可。對(duì)于GC來(lái)說(shuō),當(dāng)程序員創(chuàng)建對(duì)象時(shí),GC就開(kāi)始監(jiān)控這個(gè)對(duì)象的地址、大小以及使用情況。通常,GC采用有向圖的方式記錄和管理堆(heap)中的所有對(duì)象,通過(guò)這種方式確定哪些對(duì)象是“可用的”,哪些對(duì)象是“不可用的”,當(dāng)GC確定一些對(duì)象為“不可用”時(shí),GC就有責(zé)任回收這些內(nèi)存空間。GC在JVM中通常是由一個(gè)或一組進(jìn)程來(lái)實(shí)現(xiàn)的,它本身也和用戶程序一樣占用heap空間,運(yùn)行時(shí)也占用CPU,當(dāng)進(jìn)程運(yùn)行時(shí),應(yīng)用程序停止運(yùn)行。因此,當(dāng)GC運(yùn)行時(shí)間較長(zhǎng)時(shí),用戶能夠感到Java程序的停頓,另一方面,如果GC運(yùn)行時(shí)間太短,則可能對(duì)象回收率太低,這意味著還有很多應(yīng)該回收的對(duì)象沒(méi)有被回收,這即要求我們?cè)谠O(shè)計(jì)GC時(shí)要均衡效率。
標(biāo)簽: