java 标记_java的标记算法
1、三色标记法
(1)基本算法:要找出存活对象,根据可达性分析,从GC Roots开始进行遍历访问,可达的则为存活对象。
(2)三色:我们把遍历对象图过程中遇到的对象,按“是否访问过”这个条件标记成以下三种颜色
1)白色:尚未访问过。
2)黑色:本对象已访问过,而且本对象 引用到 的其他对象 也全部访问过了。
3)灰色:本对象已访问过,但是本对象 引用到 的其他对象 尚未全部访问完。全部访问后,会转换为黑色。
(3)假设现在有白、灰、黑三个集合(表示当前对象的颜色),其遍历访问过程为:
1)初始时,所有对象都在 【白色集合】中;
2)将GC Roots 直接引用到的对象 挪到 【灰色集合】中;
3)从灰色集合中获取对象:
a、将本对象 引用到的 其他对象 全部挪到 【灰色集合】中;
b、将本对象 挪到 【黑色集合】里面。
4)重复步骤3,直至【灰色集合】为空时结束。
5)结束后,仍在【白色集合】的对象即为GC Roots 不可达,可以进行回收。
注意:当Stop The World (以下简称 STW)时,对象间的引用 是不会发生变化的,可以轻松完成标记。而当需要支持并发标记时,即标记期间应用线程还在继续跑,对象间的引用可能发生变化,多标和漏标的情况就有可能发生。
深入理解:https://www.jianshu.com/p/12544c0ad5c1
java 标记_java的标记算法相关推荐
- 基于界面的银行家算法java实现_java实现银行家算法(Swing界面)
java代码实现了银行家算法,界面写的个人认为还是较为细致的,完整的实现了找安全序列等算法功能,可作为参考学习银行家算法. 直接上代码:①界面展示方法: public void ShowFrame() ...
- java 有穷自动机_Java实现雪花算法(snowflake)
本文主要介绍了Java实现雪花算法(snowflake),分享给大家,具体如下: 简单描述 最高位是符号位,始终为0,不可用. 41位的时间序列,精确到毫秒级,41位的长度可以使用69年.时间位还有一 ...
- ls算法java实现_Java API之算法 | 学步园
本节中所描述的多态 排序(Sorting) 排序算法可为一个 List 重新排序,以使它的元素按照某种排序关系成上升式排序.有两种形式的操作被提供.简单形式的操作只采用一个 List 并按照它的元素的 ...
- 高斯模糊java代码_Java实现高斯模糊算法处理图像
高斯模糊(英语:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop.GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常用它来减少图像噪声以及降低细节层次 ...
- java雪花_Java实现雪花算法(snowflake)
本文主要介绍了Java实现雪花算法(snowflake),分享给大家,具体如下: 简单描述 最高位是符号位,始终为0,不可用. 41位的时间序列,精确到毫秒级,41位的长度可以使用69年.时间位还有一 ...
- 高斯模糊java代码_Java 实现高斯模糊算法
接上篇文章<高斯模糊算法的原理>,本文我们借助 java 来实现高斯模糊算法,并使用高斯模糊算法处理实际图片. 高斯模糊就是图像和高斯函数的卷积.等价于傅里叶变换后乘上高斯函数再逆变换回来 ...
- java轮盘赌_java人工蜂群算法求解TSP问题
初始化: 重复以下过程: 将采蜜蜂与蜜源一一对应,根据上面第一个公式更新蜜源信息,同时确定蜜源的花蜜量: 观察蜂根据采蜜蜂所提供的信息采用一定的选择策略选择蜜源,根据第一个公式更新蜜源信息,同时确定蜜 ...
- md5 算法java实现_java实现MD5算法
import java.security.MessageDigest; /** 加密工具* @author 刘彦青 * **/ public class EncryptUtil { /** MD5加密 ...
- java 二分_java二分查找算法
算法:当数据量很大适宜采用该方法.采用二分法查找时,数据需是有序不重复的. 基本思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功:若 x 小于 ...
最新文章
- RAC 安装patch 后启动实例 报错 ORA-00439 feature not enabled- Real Application Clusters 解决方法...
- MTU 和 MSS 区别
- C++ primer 14章习题答案
- MyBatis映射文件1(增删改、insert获取自增主键值)
- CURL 模拟post和get请求
- git命令出现fatal: unable to access SSL certificate problem: self signed certificate
- 「Linux」VMware安装centos7(一)
- 在Android Studio 和 Eclipse 的 git 插件操作 代码提交以及代码冲突
- 获取ItemsControl中当前item的binding数据
- Luogu2602[ZJOI2010] 数字计数
- 检查dota2服务器是否在线,dota2服务器ping测试脚本分享
- App推广10大营销渠道方法汇总
- Linux内核详解与内核优化方案
- 接口返回的是一个图片文件而不是url 前端如何显示?
- 5e检索服务器信息,5Eplay易玩网服务器出租常见问题解答(FAQ)
- 企业邮箱的优势有哪些?使用企业邮箱的好处
- 服务器重装系统踩坑总结
- 一步步学习SPD2010--第一章节--探索SPD2010(4)--使用SharePoint Designer创建站点
- 大文件如何传输,大文件的传输方式有哪些?
- win10系统能正常接收qq微信但打不开网页问题解决方法
热门文章
- Angular之Error: ExpressionChangedAfterItHasBeenChecked
- ubuntu java ide,ubuntu 环境 安装 C++ IDE Eclipse
- Springboot注册Filter
- hibernate中的一级缓存
- Maven 修改默认端口启动web项目
- python之print实践
- CNN结构基元:纹理结构和纹理基元方程化GLOH、Gabor...(Code)
- AI最后--热门游戏引擎(CN地区)
- 石头剪刀布php源码,php实现的网页版剪刀石头布游戏示例
- 基于Web Services建立Asp与Asp.Net之间Session数据桥的应用研究