日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?...

發(fā)布時(shí)間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內(nèi)存嗎?有什么辦法主動(dòng)通知虛擬機(jī)進(jìn)行垃圾回收?

? 1對(duì)于GC來(lái)說(shuō),當(dāng)程序員創(chuàng)建對(duì)象時(shí),GC就開(kāi)始監(jiān)控這個(gè)對(duì)象的地址、大小以及使用情況。

? ? ? ?通常,GC采用有向圖的方式記錄和管理堆(heap)中的所有對(duì)象。通過(guò)這種方式確定哪些對(duì)象是"可達(dá)的",哪些對(duì)象是"不可達(dá)的"。當(dāng)GC確定一些對(duì)象為"不可達(dá)"時(shí),GC就有責(zé)任回收這些內(nèi)存空間。

? ? ?2、可以。程序員可以手動(dòng)執(zhí)行System.gc(),通知GC運(yùn)行,但是Java語(yǔ)言規(guī)范并不保證GC一定會(huì)執(zhí)行。

二、這里我們?cè)敿?xì)了解一下System.gc()的工作原理:

?Java中的內(nèi)存分配是隨著new一個(gè)新的對(duì)象來(lái)實(shí)現(xiàn)的,這個(gè)很簡(jiǎn)單,而且也還是有一些可以“改進(jìn)”內(nèi)存回收的機(jī)制的,其中最顯眼的就是這個(gè)System.gc()函數(shù)。

? 乍一看這個(gè)函數(shù)似乎是可以進(jìn)行垃圾回收的,可事實(shí)并不是那么簡(jiǎn)單。
? 其實(shí)這個(gè)gc()函數(shù)的作用只是提醒虛擬機(jī):程序員希望進(jìn)行一次垃圾回收。但是它不能保證垃圾回收一定會(huì)進(jìn)行,而且具體什么時(shí)候進(jìn)行是取決于具體的虛擬機(jī)的,不同的虛擬機(jī)有不同的對(duì)策。

? 那么下一個(gè)問(wèn)題就是:gc()進(jìn)行回收的準(zhǔn)則是什么?也就是說(shuō)什么樣的對(duì)象可以被回收?
簡(jiǎn)單來(lái)說(shuō)就是:沒(méi)有被任何可達(dá)變量指向的對(duì)象。這里的可達(dá)是我發(fā)明的……意思就是能夠找到的,那什么樣的是不可達(dá)的呢?
比如說(shuō):

1 a.v = b;
2 b.v = c;
3 /*
4  *Watch out !
5  */
6 a.v = d;

看一下這段代碼:
第一行:對(duì)象a的變量v指向了對(duì)象b
第二行:對(duì)象b的變量v指向了對(duì)象c
第六行:對(duì)象a的變量v指向了變量d。
這個(gè)時(shí)候,雖然變量c指向的對(duì)象有c以及b.v指向它,但是它們都已經(jīng)不可達(dá)了,為什么?因?yàn)槲ㄒ豢梢哉业剿鼈兊氖莂.v,但是現(xiàn)在a.v指向了d,所以他們就是不可達(dá)的了。

理由也很直觀(guān):沒(méi)有任何可達(dá)變量指向你,你還有活下去的理由嗎?你就算活下去誰(shuí)能找得到你呢?

所以說(shuō),C++中將釋放了的指針置為null的習(xí)慣要保留到Java中,因?yàn)檫@有可能是你釋放內(nèi)存的唯一途徑。

最后的箴言:不要頻繁使用gc函數(shù)。
我的建議是:保持代碼健壯(記得將不用的變量置為null),讓虛擬機(jī)去管理內(nèi)存。

轉(zhuǎn)載于:https://www.cnblogs.com/wangjintao-0623/p/9598922.html

總結(jié)

以上是生活随笔為你收集整理的垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。