当前位置: 首页 > news >正文

JVM-GC-G1垃圾回收器

JVM-GC-G1垃圾回收器

基本概念

card table
  1. card table概念是为了解决新生代对象进入老年代时,在进行新生代扫描的时候会遍历老年代对象的问题。
  2. 将内存分为多个card,如果在一个老年代card中存在引用新生代对象的对象,则将该区域标记及为dirty card。
CSet(collection set)

用来记录可以被回收的card,即通过算法计算出垃圾多的card;

RSet(RememberedSet)

它是一个HashMap,记录其他Regin中的对象指向本Regin中的引用。这样不用扫描整个堆就可以知道当前谁引用了当前分区中的对象,只需要扫描RSet即可。

MixedGC

当堆内存空间达到一定的阈值,会触发MixedGC,和CMS回收步骤相似。这个阈值可以通过XX:InitiatingHeapOccupacyPercent参数设置,默认45%

G1的特点

  1. 只有逻辑分代的概念,实际内存空间不再分代。因此内存中的空间可以属于新生代、老年代等任何一种。
  2. 将内存分而治之,将内存分块处理,每块内存称为一个Region。
  3. garbage first,垃圾优先,意思是优先回收垃圾数据多的内存块儿。
  4. 并发收集
  5. 吞吐量比PS+PO低,适用于不需要吞吐量的业务。

G1的回收阶段

YGC、MixedGC、FGC。G1的调优是尽量不要FGC。

G1如何解决漏标问题

  1. SATB + RSet解决漏标问题
  2. SATB(snapshot at the beginning):关注引用的删除
  3. 如果一个灰色对象中的引用被删除,JVM将此引用推向GC的堆栈中,保证能被GC扫描到
http://www.lryc.cn/news/375295.html

相关文章:

  • 【Ubuntu通用压力测试】Ubuntu16.04 CPU压力测试
  • Artix Linux 默认不使用 systemd
  • JVM-GC-CMS垃圾回收器
  • 【玩转google云】实战:如何在GKE上使用Helm安装和配置3节点的RabbitMQ集群
  • 【神经网络】深度神经网络
  • 机器学习算法 —— K近邻(KNN分类)
  • Thinkphp5内核流浪猫流浪狗宠物领养平台H5源码
  • c++ 智能指针使用注意事项及解决方案
  • SQLite Delete 语句
  • vue3的基本使用方法
  • Java数据结构与算法(盛水的容器贪心算法)
  • MYSQL 数字(Aggregate)函数
  • 【TensorFlow深度学习】如何处理不平衡数据集与欠采样、过采样技术
  • 【考研数学】如何保证进度不掉队?暑假强化保姆级规划
  • Vue3【二十一】Vue 路由模式(createWebHashHistory /createWebHistory )和RouterLink写法
  • 【交易策略】#22-24 残差资金流强度因子
  • CentOS 7.9检测硬盘坏区、实物定位(三)
  • redis持久化方式—RDB
  • java8实战1(让方法参数具备行为能力)
  • C#(C Sharp)学习笔记_多态【十九】
  • 电子竞赛1——基于DDS的AM信号发生器
  • CentOS7的#!bash #!/bin/bash #!/bin/env bash #!/usr/bin/bash #!/usr/bin/env bash
  • 代码随想录第四十一天打卡
  • 矩阵补全IGMC 学习笔记
  • 面试题之CSS
  • MFC扩展库BCGControlBar Pro v35.0新版亮点:重新设计的工具栏编辑器等
  • python调用SDK的问题
  • html入门综合练习
  • 函数模板的具体化
  • 【Linux 内存管理】