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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

判断Java 对象实例是否死亡

發布時間:2024/9/30 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 判断Java 对象实例是否死亡 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

垃圾收集器與內存分配策略參考目錄:

1.判斷Java 對象實例是否死亡
2. Java 中的四種引用
3.垃圾收集算法
4. Java9中的GC 調優
5.內存分配與回收策略

在進入主題之前,我們要先知道運行時數據區域都是有哪些塊內存需要進行垃圾回收。
????程序計數器、虛擬機棧、本地方法棧、3個區域都是隨著線程生而生,隨著線程滅而滅的;棧中的棧幀隨著方法的進入和退出有條不紊的執行著進棧和出棧的操作。每一個棧幀中分配多大的內存基基本上在類結構確定下來后就已知了,因此這幾個區域的內存分配和回收都具備確定性,在這幾個區域就不需要過多的考慮垃圾回收的問題,因為 方法結束或者線程結束時,內存自然就跟著回收了。而Java 堆和方法區不一樣,一個接口中方的多個實現類需要的內存可能不一樣,一個方法的多個分支需要的內存可能有也不一樣,我們只有在程序處于運行期間才知道會創建哪些對象,這部分內存的分配和回收都是動態的,垃圾回收機制所關注的也是這部分內存。

在Java 堆里幾乎放著所有Java 對象的實例,垃圾收集器在對堆進行回收之前,第一件事就是要確定哪些對象是存活的,哪些對象已經”死去”。
????在進行GC Root 之前,我們先來了解一個判斷對象是否存活的算法:引用計數法。該算法的是這樣的:給對象中添加一個引用計數器,每當有一個地方引用它時,計數器值就加1 ;當引用失效時,計數器值就減1 ;任何時刻該計數器的值為0 時,就說明該對象是不可能再被使用的。
????引用計數算法(Reference Counting)的實現很簡單,效率也很高,在大部分情況下都是一個不錯的算法。但是目前Hot Spot 虛擬機并沒有使用這種算法來管理內存,因為這種算法很難解決對象之間相互引用的問題。下面就是一個簡單的例子,創建了兩個對象,這兩個對象都相互引用著對方,導致他們的引用計數器都不為0,所以引用計數法就不能通知GC 收集器收集他們,但這兩個對象除了相互引用之外沒有任何其他的用途。我打印了GC 日志以提供分析,為了防止大對象被直接分配到老年代,我把大對象分配到老年代的內存設置成了3m大小。

public class ReferenceCountingGC {public Object instance = null;private static final int _1MB = 1024*1024;private byte[] bigSize = new byte[2 * _1MB];public static void main(String[] args) {ReferenceCountingGC obj1 = new ReferenceCountingGC();ReferenceCountingGC obj2 = new ReferenceCountingGC();obj1.instance = obj2;obj2.instance = obj1;System.gc();} }

????由上面的圖(如果上圖看不清楚你可右鍵在新標簽頁面查看圖片)可以看出在進行垃圾回首之前新生代被占用了4744 K 大小,在GC 之后新生代的內存就被釋放了。因此這也可以說明虛擬機并不是通過引用計數法判斷對象是否能存活的。


可達性分析算法:

目前的主流程序語言的實現中,都是通過可達性分析(Reachability Analysis)來判定對象是否存活的。這個算法的基本思路就是一系列的稱為”GC Roots” 的對象作為起始點,從這些節點開始向下搜索,搜索所走過的路徑被稱為引用鏈(Reference Chain),當一個對象到GC Roots 沒有任何引用鏈相連時,則證明這個對象是不可用的(圖片來自百度搜索)。如圖所示,object5、object6、object7 雖然互有關聯,但是它們到GC Roots 是不可達的,所以它們將被判定為可回收的對象。

在Java 語言中可以作為GC Roots 的對象包括下面這幾種:

  • 虛擬機棧中引用的對象
  • 本地方法棧中引用的對象
  • 堆中類靜態屬性引用的對象

????????????????????????????????????????????????????????????????????????????????????????????????????????????參考書籍:
????????????????????????????????????????????????????????????????????????????????????????????????????????????????《深入理解Java 虛擬機》周志明 著

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的判断Java 对象实例是否死亡的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲偷偷 | 亚洲国产aⅴ精品一区二区 日韩黄色在线视频 | 天堂视频在线免费观看 | 日本不卡专区 | 午夜诱惑痒痒网 | 四虎影视成人 | 久久久www免费人成人片 | 亚洲精品国产一区二区 | youjizzxxxxx | 最近中文字幕第一页 | 亚洲大片 | 国产日韩欧美自拍 | 一区二区三区黄色 | 久久福利影院 | 99re视频在线 | 国产黄色小视频在线观看 | 中文字幕精品无码一区二区 | 亚洲97 | 伊人网在线视频 | 在线免费观看视频你懂的 | 插综合| 夜色视频在线观看 | 久久精品波多野结衣 | 久久精品久久久久久 | 免费观看成人毛片 | 日本视频中文字幕 | 久久国产日韩 | 伊人伊人 | 欧美三级色图 | 中文字幕在线免费观看视频 | 成人在线免费高清视频 | 最近中文字幕mv免费高清在线 | 在线欧美日韩国产 | 亚洲国产欧美日韩在线 | 国产又粗又猛又爽又黄的网站 | 欧美人一级淫片a免费播放 西方av在线 | 五月婷在线| 欧美黄色网络 | 黄色片视频播放 | 亚洲涩涩爱 | 精品人妻少妇AV无码专区 | 久久精品欧美 | 久久精品国产99国产精品 | 麻豆视频免费在线观看 | 日韩免费中文字幕 | 中文字幕在线视频一区 | 中文字幕一区二区三区四区欧美 | 午夜免费观看视频 | 欧美精品成人一区二区三区四区 | 2024国产精品| 综合久久伊人 | 久久福利精品 | 麻豆免费在线播放 | 日本黄色激情视频 | 在线观看www. | 亚洲国产一二三区 | av狠狠 | 国产一级特黄毛片 | 天堂成人 | 欧美视频网站 | 777片理伦片在线观看 | 成人在线看片 | 久久一视频| 久久国产黄色片 | 精精国产xxxx视频在线播放 | 1级黄色大片 | 亚洲精品色图 | 天天爱av| 男人激情网 | 久久av一区二区三区漫画 | 欧美大片免费高清观看 | 蜜臀国产AV天堂久久无码蜜臀 | 91偷拍富婆spa盗摄在线 | 亚洲男人的天堂网 | 亚洲成人无码久久 | 一区二区三区欧美在线 | 色玖玖 | 五月婷婷操 | 亚洲天堂成人在线 | 日本黄色录相 | 国产在线精品一区二区三区 | 五月情网 | 国精产品一区一区三区免费视频 | 国产精品视频在线免费观看 | 午夜av导航 | 超碰极品 | 亚洲精品一线二线三线 | 中文字幕一区二区三区在线视频 | 午夜影院18 | 欧美亚一区二区三区 | 原创真实夫妻啪啪av | 日本三级免费看 | 国产原创在线观看 | 午夜成人亚洲理伦片在线观看 | 欧美亚洲一区二区在线观看 | 女人被狂躁60分钟视频 | 美女黄视频大全 | 久久91亚洲 | 夜夜高潮夜夜爽国产伦精品 |