java Java等語(yǔ)言的GC為什么不實(shí)時(shí)釋放內(nèi)存?
Java等語(yǔ)言的GC為什么不實(shí)時(shí)釋放內(nèi)存?謝謝!首先,Java的GC不使用引用計(jì)數(shù)器方法,而是使用可達(dá)性分析算法。這里我們將不詳細(xì)說(shuō)明可達(dá)性分析算法。GC的目的是恢復(fù)已分配和未使用的內(nèi)存,提高內(nèi)存利用
Java等語(yǔ)言的GC為什么不實(shí)時(shí)釋放內(nèi)存?
謝謝
!首先,Java的GC不使用引用計(jì)數(shù)器方法,而是使用可達(dá)性分析算法。這里我們將不詳細(xì)說(shuō)明可達(dá)性分析算法。
GC的目的是恢復(fù)已分配和未使用的內(nèi)存,提高內(nèi)存利用率和程序執(zhí)行效率。如果我們對(duì)內(nèi)存進(jìn)行實(shí)時(shí)的垃圾分析和回收,將會(huì)消耗更多的資源和執(zhí)行時(shí)間,抓雞不吃米。
希望對(duì)您有所幫助
java什么時(shí)候該寫(xiě).close()釋放資源,不寫(xiě)可以嗎?
雖然Java有自動(dòng)內(nèi)存恢復(fù)機(jī)制,但是如果是數(shù)據(jù)庫(kù)連接、網(wǎng)絡(luò)連接、文件操作等,不關(guān)閉就不會(huì)被回收,這是一個(gè)不正確的代碼。
換句話(huà)說(shuō),如果有close方法,您必須自己調(diào)用它。
垃圾回收機(jī)制僅在Java虛擬機(jī)控制的范圍內(nèi)釋放資源。
對(duì)于數(shù)據(jù)庫(kù)連接、套接字、文件操作等
如果有close方法,請(qǐng)?jiān)谕瓿扇蝿?wù)后執(zhí)行
最好在finally塊中關(guān)閉,因?yàn)榧词褂挟惓#部梢哉{(diào)用這些代碼。
對(duì)于已用對(duì)象,Java不建議使用類(lèi)似于C的析構(gòu)函數(shù)來(lái)釋放內(nèi)存(在C中刪除new之后的內(nèi)容,并在Java中設(shè)置為null new之后的內(nèi)容),因?yàn)镚C將調(diào)整最合適的時(shí)間來(lái)釋放內(nèi)存。在程序中濫用delete將降低Java程序的性能(但不應(yīng)導(dǎo)致額外的錯(cuò)誤)。