java 為什么java程序運(yùn)行之后會(huì)產(chǎn)生垃圾文件?
為什么java程序運(yùn)行之后會(huì)產(chǎn)生垃圾文件?首先,感謝您的邀請(qǐng)!Java虛擬機(jī)的自動(dòng)內(nèi)存管理將開發(fā)人員需要手動(dòng)恢復(fù)的內(nèi)存提供給垃圾收集器進(jìn)行自動(dòng)恢復(fù)。要在JVM中創(chuàng)建新對(duì)象,需要在內(nèi)存中分配內(nèi)存。當(dāng)沒有
為什么java程序運(yùn)行之后會(huì)產(chǎn)生垃圾文件?
首先,感謝您的邀請(qǐng)
!Java虛擬機(jī)的自動(dòng)內(nèi)存管理將開發(fā)人員需要手動(dòng)恢復(fù)的內(nèi)存提供給垃圾收集器進(jìn)行自動(dòng)恢復(fù)。
要在JVM中創(chuàng)建新對(duì)象,需要在內(nèi)存中分配內(nèi)存。當(dāng)沒有對(duì)對(duì)象的引用,并且根沒有關(guān)聯(lián)時(shí)沒有與GC的連接時(shí),這個(gè)對(duì)象將處理可回收狀態(tài),即垃圾對(duì)象。如果這樣一個(gè)對(duì)象不被回收,相應(yīng)的內(nèi)存空間就會(huì)一直被占用,并且不會(huì)被重用,這將導(dǎo)致內(nèi)存空間不足,嚴(yán)重的話直接導(dǎo)致應(yīng)用系統(tǒng)停機(jī)。
希望對(duì)您有所幫助
Java對(duì)象使用后設(shè)置為null會(huì)減少內(nèi)存占用嗎?
首先,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ù)斷開連接。GC算法會(huì)在必要時(shí)回收STR和堆內(nèi)存中的對(duì)象,但是我們不能干預(yù)GC的任何回收。
.GC將在正確的時(shí)間回收垃圾數(shù)據(jù)。