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

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

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

计算机术语 gc 是什么意思,gc是什么意思(女生网络用语gc的含义)

發(fā)布時(shí)間:2024/8/1 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机术语 gc 是什么意思,gc是什么意思(女生网络用语gc的含义) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

周一晚上下班,我高高興興的回到家里面,女朋友蹦蹦跳跳的朝我跑過(guò)來(lái),手里拿著掃把和拖布。這是又要打我么?我又做錯(cuò)了什么事情么?我大腦在高速旋轉(zhuǎn)。這時(shí),女朋友打破了沉默。

嗨,回來(lái)啦。諾,給你,我知道你最近在學(xué)習(xí)做家務(wù)。

Execuse Me?我在學(xué)習(xí)做家務(wù)?開(kāi)什么玩笑,我躲還來(lái)不及呢。

唉,你就別謙虛啦。我今天幫你拿了一份快遞,是一本書(shū)《垃圾回收的算法與實(shí)現(xiàn)》。

額、你誤會(huì)了,我要學(xué)的垃圾回收不是要做家務(wù)的意思。

Garbage Collection,簡(jiǎn)稱GC,中文名”垃圾回收”。是和計(jì)算機(jī)內(nèi)存管理有關(guān)的概念,這里面的垃圾指的是程序不用的內(nèi)存空間。

難道不是么?我說(shuō)你怎么變得這么勤快了,那你順便給我講講吧。

好吧,那我們就從做家務(wù)開(kāi)始說(shuō)起吧。

什么是垃圾回收

說(shuō)到做家務(wù),我們肯定不免要丟棄一些東西,說(shuō)的文明一點(diǎn)叫斷舍離,說(shuō)的簡(jiǎn)單一點(diǎn)就是丟垃圾。

在現(xiàn)實(shí)世界中,說(shuō)到垃圾,指的就是那些不讀的書(shū)、不穿的衣服等。這種情況下的”垃圾”指的就是”自己不用的東西”。我們?cè)谡砑覄?wù)的時(shí)候,一般是要做兩件事,找到家里不用的垃圾,把這些垃圾丟棄,以便放一些其他的有用的東西。

映射到計(jì)算機(jī)系統(tǒng)中也一樣,計(jì)算機(jī)的內(nèi)存也是有限的,不可能把所有東西都一直存放在內(nèi)存中,也需要定期釋放不用的內(nèi)存空間。而這些不用的內(nèi)存空間中存放的東西就是垃圾了。在程序中,垃圾回收的過(guò)程就是找到內(nèi)存空間中的垃圾,然后進(jìn)行垃圾回收,讓程序員能夠再次利用這部分空間。

呵,這還需要專門(mén)買(mǎi)一本書(shū)來(lái)看么?直接打開(kāi)電腦清理大師不就解決了么?

額,這種工具確實(shí)可以幫助清理內(nèi)存,但是他們是如何實(shí)現(xiàn)的才是我們關(guān)心的呀。

什么樣的東西算是垃圾

前面我們提到過(guò),生活中的垃圾就是那些不用的東西。但是,『不用』這件事是如何確定的呢?

在日常做家務(wù)的時(shí)候,我們想要確定一個(gè)東西是否可以丟棄的時(shí)候,我們會(huì)有很多方法。

引用計(jì)數(shù)算法

第一種,我們?cè)诜块g內(nèi)找到一個(gè)感覺(jué)沒(méi)什么用的usb線的時(shí)候,我們是這樣判斷他有沒(méi)有用的:

1、看家里有沒(méi)有可以用得上這個(gè)充電口的設(shè)備。

2、看家里有沒(méi)有可以適配這個(gè)USB線的適配器。

如果有的話,那么我們就認(rèn)為這根線是有用的,否則,這根USB線就會(huì)被我們標(biāo)記為垃圾。等待被丟棄。

上面這種方式,在計(jì)算機(jī)的垃圾手機(jī)算法中叫做引用計(jì)數(shù)法,其算法過(guò)程是這樣的:給對(duì)象中增加一個(gè)引用計(jì)數(shù)器,每當(dāng)有一個(gè)地方引用他時(shí),計(jì)數(shù)器就加1,當(dāng)引用失效時(shí),計(jì)數(shù)器值就減1。當(dāng)執(zhí)行垃圾回收時(shí),只需要判斷這個(gè)對(duì)象的引用計(jì)數(shù)器的數(shù)值是不是0就可以了。如果引用計(jì)數(shù)器數(shù)值為0,則表示可以回收。

這是一種比較簡(jiǎn)單的算法了,這種垃圾回收方式比較簡(jiǎn)單。

但是,這種丟垃圾的方式有一個(gè)缺點(diǎn),那就是有可能效果不明顯,就像我們想要丟棄一個(gè)USB線的時(shí)候,發(fā)現(xiàn)只有一個(gè)MP3可以使用他,然后,我們就把USB線保留下來(lái)了。當(dāng)我們想要丟棄MP3的時(shí)候,發(fā)現(xiàn)家里還有一根USB線可以用到他,這樣,MP3也被保留下來(lái)了。

但是,如果這個(gè)MP3和USB線根本就沒(méi)有人想要用了呢?比如這個(gè)USB線和MP3是家里的某個(gè)客人留下的,他表示已經(jīng)不需要了呢?

這就是引用計(jì)數(shù)法的缺點(diǎn),就是如果存在循環(huán)引用對(duì)象,將導(dǎo)致無(wú)法回收。

嗯,這種方式確實(shí)挺笨的,但是誰(shuí)會(huì)想不到MP3已經(jīng)沒(méi)有人使用了呢?

哈哈,這里只是比喻嘛。如果你要想到MP3是不是還有人用,那就是另外一種算法啦。

可達(dá)性分析算法

當(dāng)然,日常生活中,我們判斷一個(gè)東西還有沒(méi)有用,不能僅僅看是不是有東西和他”配套”,還是要看家里人到底還用不用得到。

所以,比較靠譜一點(diǎn)的判斷一個(gè)東西是不是垃圾的時(shí)候,我們會(huì)拿著一個(gè)東西,問(wèn)一遍家里的所有成員:這東西你還需要嗎?

如果得到的答案都是不需要的話,那就證明這個(gè)東西可以丟棄了。這樣就避免了MP3和USB線被誤保留的尷尬。

這種方式,就是從家庭成員出發(fā),去判斷一個(gè)東西到底有沒(méi)有用。而不是從物品之間的相關(guān)關(guān)聯(lián)關(guān)系來(lái)判斷。

上面這種垃圾判斷的方法,在計(jì)算機(jī)中叫做可達(dá)性分析算法,這個(gè)算法的基本思路是通過(guò)一系列的”GC Root”的對(duì)象作為起始點(diǎn),從這些節(jié)點(diǎn)開(kāi)始向下搜索,搜索所走過(guò)的路徑成為引用鏈,當(dāng)一個(gè)對(duì)象到GC Root沒(méi)有任何引用鏈相連時(shí),則證明此對(duì)象是不可用的。

一個(gè)物品,沒(méi)有任何家庭成員宣布需要還要繼續(xù)使用。就像一個(gè)對(duì)象,到達(dá)所有的”GC Root”都沒(méi)有引用鏈?zhǔn)且粯拥摹?/p>

在Java語(yǔ)言中,可以作為GC Root的對(duì)象包括以下幾種:

1、虛擬機(jī)棧中引用的對(duì)象。

2、方法區(qū)中類靜態(tài)屬性引用的對(duì)象。

3、方法區(qū)中常量引用的對(duì)象。

4、本地方法棧中JNI引用的對(duì)象。

嗯,相比較來(lái)說(shuō),還是后面這種方法比較靠譜。

是的。

那知道哪些東西是不需要的了,是不是就可以直接扔了?

這個(gè)倒也不一定呢。

垃圾的宿命

一般情況下,我們對(duì)于一個(gè)家里面沒(méi)用的東西處理,不太會(huì)果斷的直接扔掉。有的時(shí)候?qū)τ谝恍┯幸欢o(jì)念意義的、或者比較貴重的東西會(huì)先保留一段時(shí)間,經(jīng)過(guò)幾次清理,還是覺(jué)得沒(méi)用以后,才會(huì)被徹底扔掉。

其實(shí),計(jì)算機(jī)的垃圾回收也是一樣的。就算一個(gè)對(duì)象,通過(guò)可達(dá)性分析算法分析后,發(fā)現(xiàn)其是『不可達(dá)』的,也并不是非回收不可的。

一般情況下,要宣告一個(gè)對(duì)象死亡,至少要經(jīng)過(guò)兩次標(biāo)記過(guò)程:

1、經(jīng)過(guò)可達(dá)性分析后,一個(gè)對(duì)象并沒(méi)有與GC Root關(guān)聯(lián)的引用鏈,將會(huì)被第一次標(biāo)記和篩選。篩選條件是此對(duì)象有沒(méi)有必要執(zhí)行finalize()方法。如果對(duì)象沒(méi)有覆蓋finalize()方法,或者已經(jīng)執(zhí)行過(guò)了。那就認(rèn)為他可以回收了。如果有必要執(zhí)行finalize()方法,那么將會(huì)把這個(gè)對(duì)象放置到F-Queue的隊(duì)列中,等待執(zhí)行。

2、虛擬機(jī)會(huì)建立一個(gè)低優(yōu)先級(jí)的Finalizer線程執(zhí)行F-Queue里面的對(duì)象的finalize()方法。如果對(duì)象在finalize()方法中可以『拯救』自己,那么將不會(huì)被回收,否則,他將被移入一個(gè)即將被回收的對(duì)象集合。

對(duì)象如何在finalize()中『拯救』自己呢?

最簡(jiǎn)單的方式就是重新建立引用,比如把自己賦值給某個(gè)類變量或者對(duì)象的成員變量。

好啦。我終于明白了。

嗯,懂了就好,我不用收垃圾了吧。

不不不,我已經(jīng)幫你通過(guò)算法分析過(guò)了,門(mén)口那一堆都是可以回收的對(duì)象,你處理一下吧。

額…

華風(fēng)揚(yáng)是一家創(chuàng)業(yè)點(diǎn)子分享平臺(tái),在這里提供互聯(lián)網(wǎng)創(chuàng)業(yè)項(xiàng)目,以及引流推廣、網(wǎng)絡(luò)營(yíng)銷、實(shí)操案例分享,需要網(wǎng)上創(chuàng)業(yè)點(diǎn)子那就上華風(fēng)揚(yáng),找項(xiàng)目,學(xué)推廣就來(lái)華風(fēng)揚(yáng)!

聯(lián)系我們:微信公眾號(hào)搜索“大嬸說(shuō)事”

版權(quán)聲明:本站部分文章來(lái)源或改編自互聯(lián)網(wǎng)及其他公眾平臺(tái),主要目的在于分享信息,版權(quán)歸原作者所有,內(nèi)容僅供讀者參考,如有侵權(quán)請(qǐng)聯(lián)系我們,如若轉(zhuǎn)載,請(qǐng)注明出處:http://www.uxxsn.com/27907.html

總結(jié)

以上是生活随笔為你收集整理的计算机术语 gc 是什么意思,gc是什么意思(女生网络用语gc的含义)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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