1、哪些对象可回收?

可行性分析算法

通过一系列GC Roots(®1)作为起始点,其到对象之间的引用(®2)称为引用链,当对象到GC Roots之间不存在引用链相连,

则此对象是不可用的。如下,Object5,Object6,Object7被判定为可回收对象。

2、怎么回收?

3、方法区回收:

a.废弃常量:

没有任何String对象引用常量池的常量,也没有其他地方引用这个常量。

b.无用的类:

下列条件全部满足:

1.该类所有的实例都已经被回收。

2.加载改类的ClassLoader已经被回收

3.该类对应的java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。

®1 GC Roots

1.虚拟机栈中引用的对象

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

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

4.本地方法栈中JNI引用的对象(java中C/C++编写的方法)

®2 引用

强引用:new 对象,引用还存在,对象不回收。

软引用:有用但非必需的对象。系统将要内存溢出之前,将这些对象列进回收范围中进行第二次回收。回收完内存还不够,则内存溢出。

弱引用:非必需对象。只能生存到下次垃圾回收之前。

虚引用:回收之前收到系统通知。

转载于:https://www.cnblogs.com/codegod/p/8444071.html

JVM GC 垃圾回收(二)之 判断那些可回收,怎么回收相关推荐

  1. jvm gc垃圾回收机制和参数说明amp;amp;Java JVM 垃圾回收(GC 在什么时候,对什么东西,做了什么事情)

    jvm gc(垃圾回收机制) Java JVM  垃圾回收(GC 在什么时候,对什么东西,做了什么事情) 前言:(先大概了解一下整个过程) 作者:知乎用户 链接:https://www.zhihu.c ...

  2. JVM—GC垃圾回收器总结

    引言   如果说收集算法(标记-清理.复制.标记-整理.分代收集)是内存回收的方法论,那毫无疑问,垃圾收集器就是内存回收的具体实现.   主要有7个gc器,如下图: Serial收集器 介绍   Se ...

  3. JVM学习笔记(二):垃圾回收、垃圾回收算法、垃圾回收器(Serial、Parallel、CMC、G1)、内存分配原则实战

    垃圾回收 一.判断对象是否可以被回收 1.引用计数计数法 内容:在对象中添加一个引用计数器,每当有一个地方引用它,计数器就加一:当引用失效时,计数器就减一:任何时刻计数器为零的对象都是不可能在被使用的 ...

  4. [Java基础]-- Java GC 垃圾回收器的分类和优缺点

    关于Java的垃圾回收器,一直是个头疼的问题,这里简要说明下分类和优缺点,供选择使用. 一.JVM GC 垃圾回收器类型 JVM的垃圾回收器大致分为六种类型: 1.串行:垃圾回收器 (Serial G ...

  5. java服务器gc停顿_如何避免后台IO高负载造成的长时间JVM GC停顿(转)

    译者著:其实本文的中心意思非常简单,没有耐心的读者建议直接拉到最后看结论部分,有兴趣的读者可以详细阅读一下. 原文发表于Linkedin Engineering,作者 Zhenyun Zhuang是L ...

  6. JVM架构和GC垃圾回收机制详解

    JVM架构图分析 下图:参考网络+书籍,如有侵权请见谅 (想了解Hadoop内存溢出请看: Hadoop内存溢出(OOM)分类.参数调优化) JVM被分为三个主要的子系统 (1)类加载器子系统(2)运 ...

  7. 深入了解JVM之垃圾回收(二)

    文章目录 一.前言 二.问题 1.哪些内存需要回收? 2.在根搜索算法中,什么对象可以成为GC Roots? 3.在根搜索算法中,如何确定对象死亡? 4.方法区需要回收对象吗?回收什么对象?这个对象需 ...

  8. 22-09-02 西安 JVM 类加载器、栈、堆体系、堆参数调优、GC垃圾判定、垃圾回收算法、对象的finalize机制

    这篇文章不少地方都截图了宋红康老师的课件,实在他jvm这块讲的真好.连接地址如下: 尚硅谷宋红康JVM全套教程(详解java虚拟机)_哔哩哔哩_bilibili JVM入门 1.JVM结构图 JVM是 ...

  9. 2021-08-20【JVM系列-2】 GC垃圾回收

    文章目录 前言 一.如何判断对象可以回收 1.1 引用计数法 1.2 可达性分析算法 1.3 四种引用 (强软弱虚) 二.垃圾回收算法 2.1 标记-清除 2.2 标记-整理 标记-复制 三.分代回收 ...

最新文章

  1. iTerm2配置自动通过堡垒机登录服务器
  2. shell实例第9讲:判断用户输入的是否为IP地址
  3. Spring Boot的第一个入门程序 HelloWorld
  4. 微信小程序怎么在wxml中插入多个图片_兰州小程序开发流程费用推荐品牌_便企网...
  5. 最高的奖励 51Nod - 1163(贪心+并查集)
  6. 微信小程序css之线性渐变
  7. 浅谈消息队列的原理及优势
  8. mysql并行加载机制_Mysql表引擎优化
  9. java 和mysql 时间_java和mysql之间的时间日期类型传递
  10. 【ArcGIS|空间分析】数据采集处理(全国大学生GIS技能大赛试题)
  11. cloudera search1.0.0环境搭建(2):利用flume-ng的MorphlineSolrSink实现近实时(NRT)搜索
  12. 这几天可能是长时间关注电脑,眼睛没有得到休息,所以就早上起来眼睛有点通...
  13. openGL绘制地球
  14. c# 检测中英输入法_C# Winform 中如何获取本机安装输入法,并设置为默认输出语言,如何打开搜狗输入法和手写板...
  15. 【Maven】Idea搭建多Module项目修修补补
  16. Java基础进阶Day04
  17. CSS中禁止文本选中和鼠标悬入变手型(已解决)
  18. 项目开发——课程表查询APP
  19. Linux修改系统时间为东八区北京时间(上海时间)
  20. 微信html5 支付接口,黄聪:详解申请微信h5支付方法,开通微信h5网页支付接口(转)...

热门文章

  1. DC-RC加固修补型砂浆
  2. 编写jQueryUI插件(widget)
  3. MCSE2003学习之三
  4. EOS与以太坊有哪些区别?
  5. 用欧几里得算法求最大公约数_欧几里得算法:GCD(最大公约数),用C ++和Java示例解释...
  6. r语言 编辑 d3.js_d3.js的语言介绍
  7. Spring Boot项目快速搭建
  8. JavaScript实现智能搜索框
  9. java hanoi_Hanoi问题java解法
  10. 12、OpenCV实现图像的空间滤波——图像平滑