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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bat判断文件是否存在_BAT面试必问题系列:JVM判断对象是否已死和四种垃圾回收算法总结...

發布時間:2024/9/3 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bat判断文件是否存在_BAT面试必问题系列:JVM判断对象是否已死和四种垃圾回收算法总结... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JVM系列:

面試題一:判斷對象是否已死

判斷對象是否已死就是找出哪些對象是已經死掉的,以后不會再用到的,就像地上有廢紙、飲料瓶和百元大鈔,掃地前要先判斷出地上廢紙和飲料瓶是垃圾,百元大鈔不是垃圾。判斷對象是否已死有引用計數算法和可達性分析算法。

1.引用計數算法

給每一個對象添加一個引用計數器,每當有一個地方引用它時,計數器值加 1;每當有一個地方不再引用它時,計數器值減 1,這樣只要計數器的值不為 0,就說明還有地方引用它,它就不是無用的對象。如下圖,對象 2 有 1 個引用,它的引用計數器值為 1,對象 1有兩個地方引用,它的引用計數器值為 2 。

這種方法看起來非常簡單,但目前許多主流的虛擬機都沒有選用這種算法來管理內存,原因就是當某些對象之間互相引用時,無法判斷出這些對象是否已死,如下圖,對象 1 和對象 2 都沒有被堆外的變量引用,而是被對方互相引用,這時他們雖然沒有用處了,但是引用計數器的值仍然是 1,無法判斷他們是死對象,垃圾回收器也就無法回收。

2.可達性分析算法

了解可達性分析算法之前先了解一個概念——GC Roots,垃圾收集的起點,可以作為 GC Roots 的有虛擬機棧中本地變量表中引用的對象、方法區中靜態屬性引用的對象、方法區中常量引用的對象、本地方法棧中 JNI(Native 方法)引用的對象。

當一個對象到 GC Roots 沒有任何引用鏈相連(GC Roots 到這個對象不可達)時,就說明此對象是不可用的,是死對象。

如下圖:object1、object2、object3、object4 和 GC Roots 之間有可達路徑,這些對象不會被回收,但 object5、object6、object7 到 GC Roots 之間沒有可達路徑,這些對象就被判了死刑。

上面被判了死刑的對象(object5、object6、object7)并不是必死無疑,還有挽救的余地。進行可達性分析后對象和 GC Roots 之間沒有引用鏈相連時,對象將會被進行一次標記,接著會判斷如果對象沒有覆蓋 Object的finalize() 方法或者 finalize() 方法已經被虛擬機調用過,那么它們就會被行刑(清除);如果對象覆蓋了 finalize() 方法且還沒有被調用,則會執行 finalize() 方法中的內容,所以在 finalize() 方法中如果重新與 GC Roots 引用鏈上的對象關聯就可以拯救自己,但是一般不建議這么做,周志明老師也建議大家完全可以忘掉這個方法~

3.方法區回收

上面說的都是對堆內存中對象的判斷,方法區中主要回收的是廢棄的常量和無用的類。

判斷常量是否廢棄可以判斷是否有地方引用這個常量,如果沒有引用則為廢棄的常量。

判斷類是否廢棄需要同時滿足如下條件:

該類所有的實例已經被回收(堆中不存在任何該類的實例)。

加載該類的 ClassLoader 已經被回收。

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

面試題二:常用四種垃圾回收算法

常用的垃圾回收算法有四種:標記-清除算法、復制算法、標記-整理算法、分代收集算法。

1.標記-清除算法

分為標記和清除兩個階段,首先標記出所有需要回收的對象,標記完成后統一回收所有被標記的對象,如下圖。

缺點:標記和清除兩個過程效率都不高;標記清除之后會產生大量不連續的內存碎片。

2.復制算法

把內存分為大小相等的兩塊,每次存儲只用其中一塊,當這一塊用完了,就把存活的對象全部復制到另一塊上,同時把使用過的這塊內存空間全部清理掉,往復循環,如下圖。

缺點:實際可使用的內存空間縮小為原來的一半,比較適合。

3.標記-整理算法

先對可用的對象進行標記,然后所有被標記的對象向一段移動,最后清除可用對象邊界以外的內存,如下圖。

4.分代收集算法

把堆內存分為新生代和老年代,新生代又分為 Eden 區、From Survivor 和 To Survivor。一般新生代中的對象基本上都是朝生夕滅的,每次只有少量對象存活,因此采用復制算法,只需要復制那些少量存活的對象就可以完成垃圾收集;老年代中的對象存活率較高,就采用標記-清除和標記-整理算法來進行回收。

在這些區域的垃圾回收大概有如下幾種情況:

大多數情況下,新的對象都分配在Eden區,當 Eden 區沒有空間進行分配時,將進行一次 Minor GC,清理 Eden 區中的無用對象。清理后,Eden 和 From Survivor 中的存活對象如果小于To Survivor 的可用空間則進入To Survivor,否則直接進入老年代);Eden 和 From Survivor 中還存活且能夠進入 To Survivor 的對象年齡增加 1 歲(虛擬機為每個對象定義了一個年齡計數器,每執行一次 Minor GC 年齡加 1),當存活對象的年齡到達一定程度(默認 15 歲)后進入老年代,可以通過 -XX:MaxTenuringThreshold 來設置年齡的值。

當進行了 Minor GC 后,Eden 還不足以為新對象分配空間(那這個新對象肯定很大),新對象直接進入老年代。

占 To Survivor 空間一半以上且年齡相等的對象,大于等于該年齡的對象直接進入老年代,比如 Survivor 空間是 10M,有幾個年齡為 4 的對象占用總空間已經超過 5M,則年齡大于等于 4 的對象都直接進入老年代,不需要等到 MaxTenuringThreshold 指定的歲數。

在進行 Minor GC 之前,會判斷老年代最大連續可用空間是否大于新生代所有對象總空間,如果大于,說明 Minor GC 是安全的,否則會判斷是否允許擔保失敗,如果允許,判斷老年代最大連續可用空間是否大于歷次晉升到老年代的對象的平均大小,如果大于,則執行 Minor GC,否則執行 Full GC。

當在 java 代碼里直接調用 System.gc() 時,會建議 JVM 進行 Full GC,但一般情況下都會觸發 Full GC,一般不建議使用,盡量讓虛擬機自己管理 GC 的策略。

永久代(方法區)中用于存放類信息,jdk1.6 及之前的版本永久代中還存儲常量、靜態變量等,當永久代的空間不足時,也會觸發 Full GC,如果經過 Full GC 還無法滿足永久代存放新數據的需求,就會拋出永久代的內存溢出異常。

大對象(需要大量連續內存的對象)例如很長的數組,會直接進入老年代,如果老年代沒有足夠的連續大空間來存放,則會進行 Full GC。

總結

以上是生活随笔為你收集整理的bat判断文件是否存在_BAT面试必问题系列:JVM判断对象是否已死和四种垃圾回收算法总结...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天夜夜久久 | 久久人人爽人人爽 | 污污视频网站在线免费观看 | 久久久久国产综合av天堂 | 久久婷婷色综合 | 成 人免费va视频 | 国产福利电影在线 | 老牛影视一区二区三区 | 爱的色放在线 | 欧美福利专区 | 五月天色站 | 久久福利一区 | 国产日韩在线观看一区 | 国产精品久久久久久亚洲影视 | 伊人毛片| 开心激情综合 | 亚洲啪av永久无码精品放毛片 | 精品国产青草久久久久96 | 五十路中出 | 男女av| 日韩久久不卡 | 右手影院亚洲欧美 | 精品久久久中文字幕人妻 | 无码少妇一区二区三区芒果 | 国产一级二级三级视频 | 久久久久久久九九九九 | 成人毛片基地 | 96免费视频 | 肉大榛一进一出免费视频 | 99资源 | 国产午夜精品理论片在线 | 国产人妖一区二区三区 | 国产一区二区视频在线免费观看 | 久久久久九九 | 九色蝌蚪91 | 亚洲专区免费 | 亚洲福利在线视频 | 日本免费在线观看 | 熟女少妇在线视频播放 | 一区二区三区在线视频观看 | www三级免费| 亚洲欧美日韩精品一区 | 美女张开腿让人桶 | 久久精品一区二区国产 | 久久免费黄色 | 农村末发育av片一区二区 | 国产精品一区二区毛片 | 99黄色 | 中日韩在线观看视频 | 日本一区二区高清不卡 | 久久亚洲AV无码专区成人国产 | 欧美xxxx日本和非洲 | 国产剧情在线视频 | 午夜67194 | 精品国产乱码久久久久久预案 | 老司机狠狠爱 | 欧美一级欧美三级在线观看 | 国产精品v日韩精品v在线观看 | av一区三区| 日韩高清影院 | 日韩欧美啪啪 | 丁香婷婷九月 | 日本高清有码 | 日本免费一区二区三区最新 | 我的丝袜美腿尤物麻麻 | 久久免费的精品国产v∧ | 日本欧美www | 成人小视频在线看 | 日本三级在线视频 | 天天综合天天做天天综合 | 国产人妖av | 风间由美在线视频 | 黄色永久视频 | 亚洲精品福利网站 | 午夜精品在线免费观看 | 一区二区三区日韩在线 | 久久久精品毛片 | 亚洲少妇在线 | 亚洲中文一区二区 | 国产女人18毛片水真多1 | 红桃视频隐藏入口 | 成年人的免费视频 | 四虎永久免费观看 | 亚洲一区二区中文 | 免费精品在线视频 | 男女瑟瑟网站 | 国产精品每日更新 | 久久网页 | 老司机深夜福利网站 | 中文字幕精品在线视频 | 色久天| 777久久 | 国产精品不卡在线 | 亚洲国产欧美精品 | 最新av在线播放 | 高跟鞋调教—视频|vk | 91综合色 | 黄色视屏在线看 | 欧美精品性视频 |