国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java垃圾回收機制

2019-11-06 07:53:41
字體:
來源:轉載
供稿:網友

1、什么是垃圾回收

垃圾回收是JVM線程回收無用的對象占據的內存空間。

2、怎么發現無用對象

 a、 引用計數法 

          使用計數器區分存活對象和無用對象,堆中的每個對象對應一個計數器,創建一個對象賦值給一個變量時,計數器加1,每次對象賦值給變量時,計數器加1,引用失效時,計數器減1 ,當計數器為0,對象為無用對象。

b、根集法

       從根集開始確定可達和不可達對象,不可達對象即為無用對象。

        根集包括 虛擬機棧中引用的對象 、方法區域中的類靜態屬性引用的對象、方法區域中常量引用的對象、本地方法棧中JNI(Native方法)引用的對象

3、垃圾收集算法

a、引用計數法

     用2.a方法發現無用對象,收集。

      實現簡單,不會長時間中斷程序,但是每次增加引用和引用失效都伴隨著一個加法和減法操作,影響系統性能,而且不能處理循環引用問題。

b、標記清除法

    從根集開始,標記所有從根節點可達的對象,沒有標記的對象就是無用對象,然后,清除所有沒被標記的無用對象

    產生內存碎片

c、復制算法

   將內存空間分為兩塊,一次使用一塊,垃圾回收時,將正在使用的一塊的存活對象復制到另一空閑塊,清除正在使用的內存塊。

   不會產生內存碎片,在垃圾對象很多的情況下效率比較高

   jvm的新生代串行垃圾回收器中,使用復制算法,老生代存活對象比較多,復制成本比較大,不適合用此方法。

d、標記壓縮法

  與標記清除法一樣,標記所有從根節點可達的對象,然后將所有存活的對象壓縮到內存的一段。

  避免產生內存碎片,同時不需要兩塊內存塊。是一種老生代的回收算法。

e、分代算法

    根據對象特點把內存分成幾塊,根據每塊內存空間存儲對象的特點,采用不同的回收算法

    一般情況下,jvm把所有新建對象放入新生代內存區域,由于新手代特點是朝生夕滅,適合復制算法。一個對象經過幾次回收依然存活,會放入老生代。老生代對象存活率比較高,適合標記壓縮法。

   新生代回收頻率高,耗時短,老生代回收頻率低,耗時長。

f、分區算法

   把整個堆空間分為連續的小區間,每個區間獨立使用,獨立回收。根據目標停頓時間,合理回收若干個區間,減少一次GC的停頓


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贵阳市| 平阳县| 泽库县| 马山县| 长岭县| 华亭县| 龙山县| 上饶市| 米易县| 根河市| 开原市| 垦利县| 安乡县| 海宁市| 达日县| 保亭| 安塞县| 广元市| 白沙| 句容市| 开化县| 富锦市| 灌南县| 政和县| 榆林市| 荣昌县| 彩票| 睢宁县| 赫章县| 安福县| 阳朔县| 永康市| 林周县| 呼图壁县| 彭州市| 司法| 湛江市| 河曲县| 杭州市| 南平市| 白朗县|