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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

JVM之GCRoots概述

發布時間:2024/2/28 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM之GCRoots概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JVM之GCRoots詳解


目錄

  • 面試題引子
  • 什么是垃圾
  • 判斷對象是否可以被回收之引用計數法
  • 判斷對象是否可以被回收之枚舉根節點可達性分析
  • Java中可以作為GC Roots的對象

  • 1. 面試題引子


  • 一面:GC Roots如何確定?哪些對象可以作為GC Roots?
  • 2. 什么是垃圾


    1.簡單說就是內存中已經不再被使用到的空間就是垃圾

    3. 判斷對象是否可以被回收之引用計數法


  • Java中,引用和對象是有關聯的。如果要操作對象則必須用引用進行。
    因此,很顯然一個簡單的辦法是通過引用計數來判斷一個對象是否可以回收。簡單說,給對象中添加一個引用計數器,每當有一個地方引用它,計數器值加1,每當有一個引用失效時,計數器值減1。

  • 任何時刻計數器值為零的對象就是不可能再被使用的,那么這個對象就是可回收對象。

  • 那為什么主流的Java虛擬機里面都沒有選用這種算法呢?其中最主要的原因是它很難解決對象之間相互循環引用的問題。


  • 4. 判斷對象是否可以被回收之枚舉根節點可達性分析


  • 為了解決引用計數法的循環引用問題,Java使用了可達性分析的方法。
  • 所謂"GCroots,或者說tracingGC的“根集合”就是一組必須活躍的引用。
  • 基本思路就是通過一系列名為”GCRoots”的對象作為起始點,從這個被稱為GC Roots的對象開始向下搜索,如果一個對象到GCRoots沒有任何引用鏈相連時,則說明此對象不可用。也即給定一個集合的引用作為根出發,通過引用關系遍歷對象圖,能被遍歷到的(可到達的)對象就被判定為存活,沒有被遍歷到的就自然被判定為死亡。

  • 5. Java中可以作為GC Roots的對象


  • 虛擬機棧(棧幀中的本地變量表)中引用的對象
  • 方法區中類靜態屬性引用的對象
  • 方法區中常量引用的對象
  • 本地方法棧中JNI(即一般說的native方法)中引用的對象
  • 總結

    以上是生活随笔為你收集整理的JVM之GCRoots概述的全部內容,希望文章能夠幫你解決所遇到的問題。

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