真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

垃圾收集機(jī)制是什么意思

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)垃圾收集機(jī)制是什么意思,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比齊河網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式齊河網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋齊河地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。

在上一篇中我們說過,自動內(nèi)存管理分為兩部分:給對象分配內(nèi)存和回收分配給對象的內(nèi)存。這篇我們說說后者,即回收分配給對象的內(nèi)存?;厥諆?nèi)存要用到垃圾收集機(jī)制,英文名兒是GC(Garbage Collection)。

在本部分我們要解決如下幾個問題:

1、哪些內(nèi)存需要回收?

2、什么時(shí)候回收?

3、如何回收?

哪些內(nèi)存需要回收?

堆和方法區(qū)的內(nèi)存需要回收,其余的不需要回收。
因?yàn)橹挥卸押头椒▍^(qū)是線程共享的,其余的是與線程“同生共死”的,線程結(jié)束,內(nèi)存自然就跟著回收了,所以不用管它們。

什么時(shí)候回收?

(1)在堆里面:

當(dāng)對象“死了”的時(shí)候就要對其進(jìn)行內(nèi)存回收了。啥叫對象死了?就是沒有地方引用它了,它無用了。那怎么判斷它是否死了呢?

有兩種方法:

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

給對象添加一個引用計(jì)數(shù)器,每當(dāng)有一個地方引用它時(shí),計(jì)數(shù)器的值就+1,當(dāng)引用失效時(shí),計(jì)數(shù)器的值就-1,當(dāng)計(jì)數(shù)器的值為0時(shí),代表此對象已不被引用,也就是“可以死了”。

但這有一個弊端,就是循環(huán)引用的問題。就像下圖,堆里的兩個對象即使無用了也沒辦法對其進(jìn)行回收,因?yàn)樗鼈兓ハ嘁弥?,?jì)數(shù)器的值至少為1。

垃圾收集機(jī)制是什么意思

可達(dá)性分析

所有生成的對象都是一個稱為“GC Roots”的根的子樹。從GC Roots開始向下搜索,搜索所經(jīng)過的路徑稱為引用鏈。當(dāng)一個對象到GC Roots沒有任何引用鏈可以到達(dá)時(shí),就稱這個對象是不可達(dá)的,也就是可以被GC回收了。這個是Java中采用較多的方式。

就像下圖中的堆中未被引用的對象,就可以對其進(jìn)行回收。

垃圾收集機(jī)制是什么意思

怎么判斷一個對象是否還存在著引用?java中的引用分為4種:

強(qiáng)引用:Object o=new Object(),只要強(qiáng)引用存在,GC永遠(yuǎn)不會回收掉被引用的對象。

軟引用:描述一些還有用但非必需的對象。當(dāng)系統(tǒng)即將發(fā)生內(nèi)存溢出了,就會對其進(jìn)行回收。

弱引用:只要進(jìn)行GC,就會對其進(jìn)行回收。

虛引用:這是最弱的一種引用關(guān)系,無法通過虛引用來取得一個對象實(shí)例。它的作用是:能在這個對象被收集器回收時(shí)收到一個系統(tǒng)通知。

(2)在方法區(qū)里面:

我們知道,方法區(qū)里存儲的是已被虛擬機(jī)加載的類信息,常量,靜態(tài)變量,即時(shí)編譯器編譯后的代碼等數(shù)據(jù)。所以我們在方法區(qū)里面進(jìn)行垃圾回收,回收的是一些廢棄的常量和無用的類。

怎么判斷一個常量是否被廢棄了?

看引用計(jì)數(shù)就可以,如果沒有對象引用該常量,則說明此常量被廢棄了,也就可以回收了。

怎么判斷一個類是無用的類?

有3種情況:

a、該類所有的實(shí)例都已經(jīng)被回收。

b、加載該類的ClassLoader已經(jīng)被回收。

c、該類對應(yīng)的java.lang.Class對象沒有任何地方被引用,無法在任何地方通過反射訪問該類的方法。

如何回收?

有4種算法作為理論:
? 標(biāo)記-清除算法
? 復(fù)制算法
? 標(biāo)記-整理算法
? 分代收集算法

有5種收集器作為實(shí)現(xiàn):

垃圾收集機(jī)制是什么意思

后記

內(nèi)存溢出:系統(tǒng)無法再分配出你需要的空間。比如在堆中無法再給新生的對象分配內(nèi)存了,在棧里棧滿了無法再讓新棧幀進(jìn)棧了。

內(nèi)存泄漏:內(nèi)存被對象占用著不還,就叫內(nèi)存泄露。

上述就是小編為大家分享的垃圾收集機(jī)制是什么意思了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當(dāng)前題目:垃圾收集機(jī)制是什么意思
網(wǎng)站網(wǎng)址:http://weahome.cn/article/jcsdpp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部