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