小编典典

如果您真的对垃圾收集器的工作方式感兴趣,我可以推荐理查德·琼斯的两本有关垃圾收集的书。链接/参考在这里。这不是专门关于Java垃圾收集的。

(我有一本旧书的副本,而新书在我的购物清单上。)

这是复制收集器如何处理此问题的简单版本。

复制收集器通过将对象从一个空间(“从”空间)复制到另一个空间(“到”空间)来工作。

具体来说,GC从每个GC根开始,在“从”空间内遍历可访问对象的图形。每次找到对节点的引用(在实例字段,静态字段,堆栈框架等中)时,它都会检查该引用指向的对象,以查看其是否已标记为已访问。

如果尚未标记,GC将执行以下操作:

它在起始空间中标记对象。

它将对象复制到目标空间。

它将对象的地址存储到起始空间对象中的空间中。(这就像一个转发地址。)

它递归地访问对象的空间副本的每个参考字段。

其结果是引用到空间对象。

如果该对象已被标记,GC将查找转发地址,并返回该地址。

然后,使用指向to-space中对象的指针来更新GC引用来源的位置(在to-space或某个GC根目录中)。

如果您遵循所有这些方法,那么您将发现GC不需要去寻找所有拥有对给定移动对象的引用的位置。相反,它仅遇到遍历可到达对象的所有位置。当然,GC 确实

必须进行遍历,但是有各种技术可以减少每个GC循环中需要进行的遍历量。

如果您未遵循上述说明,请阅读我推荐的其中一本教科书。他们会比我做得更好。您还将找到有关其他种类的GC如何处理此问题的材料。

虽然Java HotSpot的GC是 所有

这种或那种形式的复制收藏。对于并行和并发收集,事情要比我上面的描述要复杂得多,但是“转发地址”机制对所有它们都是通用的。

(关于HotSpot GC的出版物或其他公共文档并不多,并且现有的大多数材料都假定读者对现代垃圾收集器的工作原理有很好的了解。)

2020-10-20

java中一直gc_如果JVM在执行GC时一直在移动对象,那么它如何解析引用?相关推荐

  1. java 定义变量时 赋值与不赋值_探究Java中基本类型和部分包装类在声明变量时不赋值的情况下java给他们的默认赋值...

    探究Java中基本类型和部分包装类在声明变量时不赋值的情况下java给他们的默认赋值 当基本数据类型作为普通变量(八大基本类型: byte,char,boolean,short,int,long,fl ...

  2. Java中如何实现数组反转,将数组元素倒过来排列?【含详细解析】

    Java中如何实现数组反转,将数组元素倒过来排列?[含详细解析] 数组元素反转:本来的样子{1,2,3,4,5},反转后{5,4,3,2,1}.要求,不能使用新数组. 分析过程 数组元素反转其实就是对 ...

  3. java 基本类型 不赋值_探究Java中基本类型和部分包装类在声明变量时不赋值的情况下java给他们的默认赋值...

    探究Java中基本类型和部分包装类在声明变量时不赋值的情况下java给他们的默认赋值 当基本数据类型作为普通变量(八大基本类型: byte,char,boolean,short,int,long,fl ...

  4. Java中JDK,JRE和JVM之间的关系

    初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Envi ...

  5. 面试官:Java中线程是按什么顺序执行的?

    本文分享自华为云社区<[高并发系列]Java中线程到底是按什么顺序执行的?你了解的可能是错误的!>,原文作者:冰 河 . Java中线程的执行顺序可能与你想的不一样!一文解密多线程的执行顺 ...

  6. java中的强行终止线程的执行

    不合理 package com.bjpowernode.java.thread; /* 在java中怎么强行终止一个线程的执行.这种方式存在很大的缺点:容易丢失数据.因为这种方式是直接将线程杀死了,线 ...

  7. Java中创建对象的六个步骤 细分后(new关键字)对象头详细介绍

    要看的懂对象的创建过程,首先你得有对Java虚拟机和Java基础以及JUC很是熟悉, 比如类的加载过程.CAS.多线程.JVM的GC等等 文章目录 一.创建对象的六个步骤: 二.对象头的内部结构 首先 ...

  8. java中创建对象的一般格式是什么_Java零基础快速入门|对象的创建和使用(下)...

    本篇文章主要内容:构造方法Constructor 空指针异常 当实例变量是一个引用 方法调用时参数的传递问题 难点解惑 构造方法Constructor 什么是构造方法?构造方法怎么定义?构造方法怎么调 ...

  9. java中的4种引用以和GC Roots

    https://juejin.im/post/5d06de9d51882559ee6f4212?utm_source=gold_browser_extension 1.首先,四种引用如下: Final ...

最新文章

  1. 题目1195:最长最短文本
  2. 12.oauth密码模式identity server4实现
  3. Xcode中release和debug模式
  4. win10时间和linux不同步时间,ubuntu16和windows10的时间同步问题
  5. sqlite3使用简介
  6. go 访问数据库mysql基础
  7. TIOBE 12 月编程语言排行榜:Python 夺回前三,Go 跌出前十
  8. dos中进入其他盘中的方法
  9. fastdfs返回的url_FastDFS上传文件Demospringboot实现
  10. 腾讯无线副总李颖:腾讯QQ游戏无线平台将亮相长城会
  11. 福禄克光纤OTDR测试原理
  12. android 摄像头黑屏,5+app 安卓调用摄像头黑屏 苹果可以
  13. Wing IDE安装与破解方法
  14. Windows 2003安全设置大全----2003系统错误大全解释
  15. Python tkinter 保姆级超简易登陆界面教学
  16. python保留n位有效数字
  17. 搞笑恶搞彩虹糖的梦—三炮山人组之2人世界
  18. CodeForce#1625B Elementary Particles解题笔记
  19. 字节编程题 毕业旅行问题
  20. java随机抓取网站上的图片_抓取一个网站特定的全部图片(JAVA)

热门文章

  1. 普通的Spring Web项目正常启动,在访问某些JSP页面时,页面会报错 http://java.sun.com/jsp/jstl/core
  2. 降序排序_排序简单,应用不易,使用Excel排序的几点建议
  3. switch语句判断范围_MQL5从入门到精通【第四章】(一)条件判断语句
  4. hudi延迟日志命名
  5. MyEclipse一定要做的事-改变默认编码
  6. 2021高考成绩查询。,2021高考成绩公布时间 2021高考成绩查询方式
  7. java基础的知识_Java基础知识点(一)
  8. python爬虫微博图片,pyhton爬虫爬取微博某个用户所有微博配图
  9. javamailsender注入失败_关于SpringBoot使用Redis空指针的问题(不能成功注入的问题)...
  10. html css表格样式模板_Excel报价单模板,完整表格设计,82套多样式选择,拿来就用...