java 在Java中如何主動(dòng)調(diào)用GC?
在Java中如何主動(dòng)調(diào)用GC?在正常情況下,我們使用Java的自動(dòng)回收機(jī)制。如果有GC不能解決的問(wèn)題,我們應(yīng)該用工具來(lái)檢查。總體回答:系統(tǒng).gc()提示虛擬機(jī)執(zhí)行GC,但僅提示。虛擬機(jī)不會(huì)立即執(zhí)行GC
在Java中如何主動(dòng)調(diào)用GC?
在正常情況下,我們使用Java的自動(dòng)回收機(jī)制。如果有GC不能解決的問(wèn)題,我們應(yīng)該用工具來(lái)檢查。
總體回答:系統(tǒng).gc()提示虛擬機(jī)執(zhí)行GC,但僅提示。虛擬機(jī)不會(huì)立即執(zhí)行GC。首先,Java對(duì)象是引用變量,它使用兩種內(nèi)存區(qū)域:堆內(nèi)存和堆棧內(nèi)存。Java對(duì)象存儲(chǔ)在堆內(nèi)存中,對(duì)它們的引用(理解為變量)存儲(chǔ)在堆棧內(nèi)存中。
例如,string STR=new string(“string”)使用兩段內(nèi)存,new string(“string”)存儲(chǔ)在堆內(nèi)存中,STR變量存儲(chǔ)在堆棧內(nèi)存中。
當(dāng)我們將對(duì)象設(shè)置為null(即:STR=null)時(shí),STR變量與堆內(nèi)存中的數(shù)據(jù)斷開(kāi)連接。GC算法會(huì)在必要時(shí)回收STR和堆內(nèi)存中的對(duì)象,但是我們不能干預(yù)GC的任何回收。
.GC將在正確的時(shí)間回收垃圾數(shù)據(jù)。