可达性分析算法的基本思想,(由于该算法是JVM垃圾回收判断对象死亡的基本算法)这里,我们对上一篇讲的关于可达性分析算法做一个更加细致的研究;

   首先是根节点(GC Roots):作为可达性算法的初始节点,什么样的节点可以做为根节点呢?

  1. 虚拟机栈(栈帧中的本地变量表)中引用的对象;
  2. 本地方法区中的静态属性引用对象;
  3. 方法区中的常量引用对象;
  4. 本地方法栈中的JNI(Native方法)的引用对象;

   在可达性算法中,表示可达的标准为是否有引用链与之相连,这个时候存在内存中的对象只有垃圾对象和非垃圾对象之分,但是,很多时候,有一些对象是再内存充足的时候可以留在内存中,方便之后调用,内存出现不足时,有需要讲该类对象进行垃圾回收,为其他的对象留出空间,很多系统的缓存功能都符合上述条件;

   Java中将引用分为强引用(Strong Reference),软引用(Soft Reference),弱引用(Weak Reference),虚引用(Phantom Reference)四种,引用强度逐渐降低;

强引用就是指在程序代码中普遍存在的引用,只要强引用在,垃圾搜集器永远不会搜集被引用的对象。

软引用是用来描述一些有用但并不是必需的对象,对于软引用关联着的对象,只有在内存不足的时候JVM才会回收该对象。

弱引用也是用来描述非必需对象的,当JVM进行垃圾回收时,无论内存是否充足,都会回收被弱引用关联的对象。

虚引用并不影响对象的生命周期,如果一个对象与虚引用关联,则跟没有引用与之关联一样,在任何时候都可能被垃圾回收器回收。

可达性分析算法-针对的对象相关推荐

  1. 31. 如何计算对象已死(引用计数器算法、可达性分析算法)32.对象是否可 GC?33. Minor GC 和 Full GC

    31. 如何计算对象已死 31.1.引用计数器算法 引用计数器算法是给每个对象设置一个计数器,当有地方引用这个对象的时候,计数器+1,当引用失效的时候,计数器-1,当计数器为0的时候,JVM就认为对象 ...

  2. 对象是否要被回收(引用计数和可达性分析算法)

    java堆和方法区主要存放各种类型的对象(方法区中也存储一些静态变量和全局常量等信息),那么我们在使用GC对其进行回收的时候首先要考虑的就是如何判断一个对象是否应该被回收.也就是要判断一个对象是否还有 ...

  3. 深入理解JVM03--判断对象是否存活(引用计数算法、可达性分析算法,最终判定),Eclipse设置GC日志输出,引用

    本文是基于周志明的<深入理解Java虚拟机> 堆中几乎存放着Java世界中所有的对象实例,垃圾收集器在对堆回收之前,第一件事情就是要确定这些对象哪些还"存活"着,哪些对 ...

  4. 深入理解JVM(三)——JVM之判断对象是否存活(引用计数算法、可达性分析算法,最终判定),Eclipse设置GC日志输出,引用

    本文转载自https://blog.csdn.net/ochangwen/article/details/51406779 本文是基于周志明的<深入理解Java虚拟机> 堆中几乎存放着Ja ...

  5. 【Java 虚拟机原理】垃圾回收算法 ( 可达性分析算法 | GC Root 示例 | GC 回收前的两次标记 | finalize 方法示例 )

    文章目录 一.可达性分析算法 二.GC Root 示例 三.GC 回收前的两次标记 四.finalize 方法示例 一.可达性分析算法 在 堆内存 中 , 存在一个 根对象 GC Root , GC ...

  6. JVM 垃圾回收算法 -可达性分析算法!!!高频面试!!!

    前言:学习JVM,那么不可避免的要去了解JVM相关的垃圾回收算法,本文只是讲了讲了可达性分析算法,至于标记-清除.标记-复制,标记-整理,分代收集等等算法,会在近两天的文章中陆续更新出来. 很喜欢一句 ...

  7. 3.内存分配、逃逸分析与栈上分配、直接内存和运行时常量池、基本类型的包装类和常量池、TLAB、可达性分析算法(学习笔记)

    3.JVM内存分配 3.1.内存分配概述 3.2.内存分配–Eden区域 3.3.内存分配–大对象直接进老年代 3.3.1.背景 3.3.2.解析 3.4.内存分配–长期存活的对象进去老年代 3.5. ...

  8. JVM—引用计数和可达性分析算法(存活性判断)

    1 引用计数算法 1.1 算法思想   给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1:   当引用失效时,计数器值就减1:   任何时候计数器为0时的对象就是不能再被使用. 1. ...

  9. java gc 可达性_JAVA--GC 垃圾回收机制----可达性分析算法

    在JVM 中,java 为我们提供可有效的垃圾回收机制,GC ,GC的创建无疑是为了缓解内存压力.保存有效数据.回收垃圾无效数据: 在此之前GC在我的理解中,一直只是个概念,内存中出现垃圾,GC来回收 ...

最新文章

  1. FLINK源代码调试方式
  2. 抽象工厂与工厂模式例子
  3. FB邮件服务器测试smtp,pop3
  4. 数据结构学习笔记(四):重识数组(Array)
  5. 频谱分析幅值单位_案例分享丨某水泥厂入窑斗提减速机不对中故障分析及处理...
  6. STM32F103系列实战之通用同步异步收发器(USART)
  7. Python学习---入门导学篇
  8. 【批处理学习笔记】第二十五课:间接传递
  9. UTF与ascii区别
  10. 来面试,偷懒不答题,直接忽略
  11. java web jsp页面,jsp引入页面 Java Web JSP详解(下)
  12. 爱情不是等你有空才珍惜的
  13. 报表工具——开源还是商用
  14. 【观察】从拥抱变化到韧性成长,联想凌拓三年“三级跳”
  15. Taro3 React hook怎么使用Taro-prase显示markdown文件?
  16. 批量将word转换成excel格式的方法
  17. H5 Canvas绘制三角函数图像
  18. 华为eNSP基础命令
  19. 转录因子详细介绍(motif)
  20. 如何通过omnipeek抓取sniffer log

热门文章

  1. 彻底删除Navicat注册表
  2. java地图点线面_点线面类型互转
  3. SpringFox 学习
  4. 基于RSA和AES混合加密实现的加解密小工具
  5. catia制作物料明细,如何在CATIA中生成产品物料清单 划重点了
  6. 字符串 splice()、split() 和slice()方法
  7. 基于混合模型的语音降噪实践
  8. 不带头结点建立单链表(头插法、尾插法)
  9. C++ 实现tring字符串trim函数和split函数
  10. es6 去掉空格_微信小程序自动去除input空格的方法