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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

深入理解java虚拟机---读后笔记(垃圾回收)

發布時間:2025/7/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入理解java虚拟机---读后笔记(垃圾回收) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

運行時數據區,主要包括方法區、虛擬機棧、本地方法棧、堆、程序計數器,該部分內存都是線程隔離的。

然后和其交互的有執行引擎、本地庫接口,此部分線程之間是可以共享的。

1、 引用計數算法

給對象添加一個引用計數器,當有一個地方引用它時,計數器值就加1;當引用失效時,計數器值就減1,任何時刻計數器為0的對象就是不可能再被使用的。使用的案例有微軟的COM技術、使用ActionScript3的FlashPlayer,Python語言。java語言中沒有選用引用計數算法來管理內存,其中最重要的原因是它很難解決對象之間的相互循環引用的問題。

例子:

public class ReferenceCountingGC{public Object instance = null;private static final int _1MB = 1024*1024;/*** 這個成員屬性唯一意義就是占點內存,以便能在GC日志中看清楚是否被回收過*/private byte[] bigSize = new byte[2*_1MB];public static void testGC(){ReferenceCountingGC objA = new ReferenceCountingGC();ReferenceCountingGC objB = new ReferenceCountingGC();objA.instance = objB;objB.isstance = objA;objA =null;objB = null;System.gc();} }

這兩個對象已經不可能再被訪問啦,但是他們之間因為相互的引用著對方,所以他們的引用計數都不為0。

2、根搜索算法

通過一系列名為“GC Roots”的對象作為起始點,從這些節點開始向下搜索,搜索所走過的路徑成為引用連(Reference Chain),當一個對象到GC Roots沒有任何引用連相連時,則證明該對象是不可達的,則可以被判定為是可回收的對象。

JAVA語言中,可以作為GC Roots的對象包括下面幾種:

1)虛擬機棧(棧幀中的本地變量表)中的引用的對象。

2)方法區中的類靜態屬性引用的對象。

3)方法區中常量引用的對象。

4) 本地方法棧中JNI(即一般說的Native方法)的引用的對象。

轉載于:https://www.cnblogs.com/Eunice-mogu/p/5315450.html

總結

以上是生活随笔為你收集整理的深入理解java虚拟机---读后笔记(垃圾回收)的全部內容,希望文章能夠幫你解決所遇到的問題。

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