zoukankan      html  css  js  c++  java
  • JVM GC Roots

    如何确定一个堆中的对象是否死去?

    两个思路:

      1、引用计数法

        给每个对象添加一个引用,用来统计指向该对象的引用计数。有引用时就加1,引用失效时就减1。任何时候引用计数为0,该对象就死亡了。可以被当做垃圾处理。但引用计数法有个难以解决的问题:循环引用。

      2、可达性分析算法

        通过一系列的被称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链时,则证明此对象不可用,会被判定为可回收的对象。

        可达性分析算法可以解决引用计数法中的循环引用问题。

    什么是GC Roots?

      GC Roots是一些由堆外指向堆内的引用。

      作为GC Roots的对象包括以下几种:

      1、虚拟机栈(帧栈中的本地变量表)中引用的对象。

      2、方法区中类静态属性引用的对象。

      3、方法区中常量引用的对象。

      4、本地方法栈中JNI(Native方法)引用的对象。

  • 相关阅读:
    JVM基础
    JVM基础
    python相关
    charles 的配置与使用
    大型缓存架构实战
    redis环境搭建
    多线程与并发 | 线程池
    JVM | 内存溢出和解决方案
    读书笔记 | Mysql是怎样运行的
    读书笔记 | Java并发编程实战
  • 原文地址:https://www.cnblogs.com/natian-ws/p/10729914.html
Copyright © 2011-2022 走看看