java gc是什么
gc是指垃圾回收機(jī)制,當(dāng)一個(gè)對(duì)象不能再被后續(xù)程序所引用到時(shí),這個(gè)對(duì)象所占用的內(nèi)存空間就沒有存在的意義了,java虛擬機(jī)會(huì)不定時(shí)的去檢測(cè)內(nèi)存中這樣的對(duì)象,然后回收這塊內(nèi)存空間。
gc是Java與C++/C的主要區(qū)別之一,在使用JAVA的時(shí)候,一般不需要專門編寫內(nèi)存回收和垃圾清理代 碼。這是因?yàn)樵贘ava虛擬機(jī)中,存在自動(dòng)內(nèi)存管理和垃圾清掃機(jī)制。
GC的基本原理:
1. 對(duì)于程序員來說,用new關(guān)鍵字即在堆中分配了內(nèi)存,我們稱之為“可達(dá)”。對(duì)于GC來說,只要所有被引用的對(duì)象為null時(shí),我們稱之為“不可達(dá)”,就將進(jìn)行內(nèi)存的回收。
2. 當(dāng)一個(gè)對(duì)象被創(chuàng)建時(shí),GC開始監(jiān)控這個(gè)對(duì)象的大小、內(nèi)存地址及使用情況。GC采用有向圖的方式記錄和管理堆(heap)中的所有對(duì)象,通過這種方式可以明確哪些對(duì)象是可達(dá)的,哪些不是。當(dāng)確定為不可達(dá)時(shí),則對(duì)其進(jìn)行回收。
3. 保證GC在不同平臺(tái)的實(shí)現(xiàn)問題,java規(guī)范對(duì)其很多行為沒有進(jìn)行嚴(yán)格的規(guī)定。對(duì)于采用什么算法,什么時(shí)候進(jìn)行回收等。
php中文網(wǎng),大量的免費(fèi)Java入門教程,歡迎在線學(xué)習(xí)!