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

中村成洋《垃圾回收的算法与实现》PDF 读书笔记

观前提醒

为了能够锻炼自己,我会查阅大量外文不停的修改内容,少部分会提示成中文。

可能有误,请见谅

提示:若是觉得阅读困难,可以看如下内容

  • 脚本之家可获取,若失效可私信
  • 浏览器的沙拉查词扩展(推荐谷歌和Edge浏览器

GC Algorithms 学习GC之前

目标

  • 了解有关数据结构
  • 这些数据结构堆GC(Garbage Collection)所起作用

对象(Object)

GC的概念:通过应用程序利用的数据的集合

书本为了方便理解,域的大小设为1字节,如下图
在这里插入图片描述

概念:保存对象本身信息
信息:

  • 对象的大小
  • 对象的种类

概念:在对象中可访问的部分
数据类型

  • 指针:指向内存空间中某块区域的值
  • 非指针:在编程中直接使用的值本身,比如数值、字符以及布尔值。

限制

  • 不能改头信息
  • 可以引用或替换对象的域值

指针

在这里插入图片描述

mutator

在这里插入图片描述

概念:执行程序时存放对象的内存空间
在这里插入图片描述
程序按照mutator的要求在堆中存放对象

  • 1、堆被对象占满时,GC分配用于堆的内存空间
  • 2、GC分配不够可用空间

扩大堆,继续分配可用空间(现实操作)
销毁所有计算结果,报错(书本操作)

活动对象(Active Object)与非活动对象

在这里插入图片描述

分配

在这里插入图片描述

熟悉树的概念就知道根在代码中干嘛用的了。

分块(chunk)

概念:为利用对象而事先准备出来的空间

流程

1、According to the mutator’s requirements, our program will divide this chunk into appropriate sizes and use it as an active object.
2、The object is soon converted into the garbage and recycled.
3、At this point, this part of the reclaimed memory space(译:内存空间) becomes chunked again, in preparation for the next use.

评价标准

在这里插入图片描述

吞吐量、堆使用效率和最大暂停时间不可兼得

  • 吞吐量

在单位时间内的处理能力
不要只看是哪种类型的GC,还要考虑mutator的动作

  • 最大暂停时间

因执行 GC 而暂停执行 mutator 的最长时间,可以想象成你玩电脑游戏的帧数,启动程序的等待时间。

  • 堆使用效率

头的大小,越小越好
相应的堆越大越好,GC会更快

  • 访问的局部性

条件:越是高速存取的存储器容量就越小。

The high-speed memory capacity is small, so it is necessary to store data in memory, and the CPU reads data from memory to the cache when needed.

作用
具有引用关系的对象之间通常很可能存在连续访问的情况(访问的局部性的概念)。

恰好一个对象要被放入cache,与其具有关系的对象也被拉入(好兄弟一起垫背)

GC标记-清除算法

未完待续

http://www.lryc.cn/news/27159.html

相关文章:

  • docker 网络模式
  • 数据库开发(一文概括mysql基本知识)
  • 【JVM】详解Java内存区域和分配
  • JAVA开发(史上最完整追本溯源JAVA历史、发展和学习)
  • Qt 防止程序退出
  • 【校验码 - 循环冗余校验码CRC】
  • 【Rust】一文讲透Rust中的PartialEq和Eq
  • Vulnhub靶场----9、DC-9
  • 使用Containerd搭建K8s集群【v1.25】
  • NMT - 构建双语概率词典(Probabilistic dictionaries)
  • 《ChatGPT是怎样炼成的》
  • Streaming System是第一章翻译
  • abap MODIFY常用语法解析
  • [媒体分流直播]媒体直播和传统直播的区别,以及媒体直播的特点
  • 打地鼠游戏-第14届蓝桥杯STEMA测评Scratch真题精选
  • 链表经典刷题--快慢指针与双指针
  • 【Java集合框架】篇四:Set接口
  • Python 数据库连接 + 创建库表+ 插入【内含代码实例】
  • DSS 部署环境需求清单
  • Python的面向对象,详细讲解Python之用处等基本常识
  • 如何使用固态继电器为恒温器供电
  • 【LeetCode】剑指 Offer(14)
  • Rman单实例迁移到单实例
  • 毕业设计 基于stm32舞台彩灯控制器设计app控制系统
  • 【MyBatis】篇一.
  • 【JavaScript速成之路】JavaScript流程控制
  • 18、基准测试,sysbench
  • 3D,点云拼接2
  • jmeter学习笔记一(http基础知识)
  • 【Java】CompletableFuture 并发顺序调度