当前位置: 首页 > 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标记-清除算法

未完待续

相关文章:

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

观前提醒 为了能够锻炼自己,我会查阅大量外文不停的修改内容,少部分会提示成中文。 可能有误,请见谅 提示:若是觉得阅读困难,可以看如下内容 脚本之家可获取,若失效可私信浏览器的沙拉查词扩展&#xf…...

docker 网络模式

docker 网络模式主要分为四种,可以通过docker network ls 查看 ~$ docker network ls NETWORK ID NAME DRIVER SCOPE a51d97d72f10 bridge br…...

数据库开发(一文概括mysql基本知识)

Mysql 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 关系型数据库(Relational Database Management System:关系数据库管理系统)应用软件之一。mysql在问开发中,几乎必不可少,因为其他的可能是要收费的&#x…...

【JVM】详解Java内存区域和分配

这里写目录标题一、前言二、运行时数据分区2.1程序计数器(PC)2.2 Java虚拟机栈2.3 本地方法栈2.4 Java堆2.5 方法区2.5.1 运行时常量池2.6 直接内存三、HotSpot虚拟机对象探秘3.1 对象的创建3.2 对象的内存布局3.3 对象的访问定位一、前言 C/C需要自行回收和释放已经没用的对象…...

JAVA开发(史上最完整追本溯源JAVA历史、发展和学习)

(第二次世界大战1931-1945) 世界上最先进的技术往往是由于战争催生,在第二次世界大战中除了飞机,坦克和大炮的武器较量外,在隐秘战线的情报工作其实更为重要,在军队将领来往的电报中,为了防止军事情报的泄漏&#xff…...

Qt 防止程序退出

文章目录摘要QWidgetQML方法 1方法 2关键字: Qt、 eventFilter、 Close、 键盘、 任务管理器摘要 今天要聊得内容还是怎么防止别人关闭我的程序,之前都是在win下面,一般都是用过钩子连捕获键盘事件,完了吧对应的事件忽略&#x…...

【校验码 - 循环冗余校验码CRC】

水善利万物而不争,处众人之所恶,故几于道💦 目录 循环冗余校验码 1.多项式 2.CRC编码的组成 3.校验码的生成 4.例题: 循环冗余校验码 广泛地在网络通信及磁盘存储时采用。 1.多项式 在循环冗余校验(CRC)码中,无一例…...

【Rust】一文讲透Rust中的PartialEq和Eq

前言 本文将围绕对象:PartialEq和Eq,以及PartialOrd和Ord,即四个Rust中重点的Compare Trait进行讨论并解释其中的细节,内容涵盖理论以及代码实现。 在正式介绍PartialEq和Eq、以及PartialOrd和Ord之前,本文会首先介绍…...

Vulnhub靶场----9、DC-9

文章目录一、环境搭建二、渗透流程三、思路总结一、环境搭建 DC-9下载地址:https://download.vulnhub.com/dc/DC-9.zip kali:192.168.144.148 DC-9:192.168.144.158 二、渗透流程 1、信息收集nmap -T5 -A -p- -sV -sT 192.168.144.158思路&am…...

使用Containerd搭建K8s集群【v1.25】

[toc] 一、安装要求 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 一台或多台机器,操作系统 CentOS7.x-86_x64硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多集群中所有机器之间网络互通可以访问外网,需要拉取镜像禁止swap分区二、准备环境 角色IP…...

NMT - 构建双语概率词典(Probabilistic dictionaries)

文章目录一、安装依赖包mosesdecoder安装 mgiza二、数据预处理三、训练本文参考:How to train your Bicleaner https://github.com/bitextor/bicleaner/wiki/How-to-train-your-Bicleaner 一、安装依赖包 这个过程主要依赖于 mosesdecodermgiza mosesdecoder git…...

《ChatGPT是怎样炼成的》

ChatGPT 在全世界范围内风靡一时,我现在每天都会使用 ChatGPT 帮我回答几个问题,甚至有的时候在一天内我和它对话的时间比和正常人类对话还要多,因为它确实“法力无边,功能强大”。 ChatGPT 可以帮助我解读程序,做翻译…...

Streaming System是第一章翻译

GIthub链接,欢迎志同道合的小伙伴一起翻译 Chapter 1.Streaming101 如今,流数据处理在大数据中是非常重要的,其主要原因是: 企业渴望对他们的数据有更及时的了解,而转换到流处理是实现更低延迟的一个好方法&#xf…...

abap MODIFY常用语法解析

MODIFY 是既可以操作数据又可以操作内表的一个语法, 实现的逻辑都一样. 如果你内表或数据库中存在该行数据会对该行数据进行更新. 如果不存在,就会插入数据. , 1.如果it_tab是带有标题行的内表,是可以忽略FROM wa_tab工作区的 MODIFY it_tab .2.把工作区wa_tab中的数据更新…...

[媒体分流直播]媒体直播和传统直播的区别,以及媒体直播的特点

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 直播毋庸置疑已经融入到了我们生活的方方面面,小到才艺,游戏,大到政策的发布,许多企业和机构也越来越重视直播,那么一场活动怎…...

打地鼠游戏-第14届蓝桥杯STEMA测评Scratch真题精选

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第102讲。 蓝桥杯选拔赛现已更名为STEMA,即STEM 能力测试,是蓝桥杯大赛组委会与美国普林斯顿多…...

链表经典刷题--快慢指针与双指针

本篇总结链表解题思路----快慢指针,其实也就是双指针,这个快慢并不单纯指“快慢”,它更多的可以表示,速度快慢,距离长度,时间大小等等,用法很有趣也很独特,理解它的思想,…...

【Java集合框架】篇四:Set接口

1. Set及主要实现类特点 Set:无序、不可重复(去重)、存储value HashSet:底层使用HashMap,即使用 数组单项链表红黑树 结构进行存储。(jkd8中) LinkedHashSet:是HashSet的子类&…...

Python 数据库连接 + 创建库表+ 插入【内含代码实例】

人生苦短 我用python Python其他实用资料:点击此处跳转文末名片获取 数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TESTDB.在TESTDB数据库中您已经创建了表 EMPLOYEEEMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。连…...

DSS 部署环境需求清单

文章目录 DSS系统需求项目地址计算资源计算基准:计算引擎程序硬件需求表 :DSS计算及存储资源需求计算资源计算基准:计算程序硬件需求表:DSS系统需求 项目地址 https://github.com/WeBankFinTech/DataSphereStudio 计算资源计算基准: 1.日活用户10万。 2.单用户单日总…...

基于PSCAD的光伏-火电打捆直流送出系统建模与扰动特性仿真研究

基于PSCAD的光伏-火电打捆直流送出系统建模与扰动特性仿真研究 摘要 随着我国“双碳”目标的深入推进,以光伏为代表的新能源发电装机规模持续快速增长。然而,光伏发电具有间歇性和波动性特征,大规模并网对电力系统的安全稳定运行提出了严峻挑战。将光伏与火电打捆经高压直…...

ASL1架构规范语言:Arm处理器设计的核心工具

1. ASL1架构规范语言概述ASL1(Architecture Specification Language)是Arm公司专为处理器架构设计开发的领域特定语言(DSL),主要用于精确描述Arm架构参考手册中的指令集行为。这种语言在2025年发布的A-profile架构参考…...

STM32F4的DSP库怎么在CLion里用起来?保姆级CMake配置指南(含FPU开启)

STM32F4的DSP库在CLion中的完整CMake配置指南(含FPU优化) 第一次在CLion里看到STM32的DSP库报错时,我盯着满屏的"undefined reference"发了半小时呆。作为从Keil转战CLion的老嵌入式开发者,我太清楚DSP库在信号处理项目…...

CANN/asc-devkit Trunc截断函数API

Trunc 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/cann…...

有一种同事,领导再信任也要小心提防

◆你好。 职场上有这么一类人,他们精于伪装,表面上能力出众、忠心耿耿,实则暗地里拉帮结派、打压异己,甚至一步步架空领导。 这种人最可怕的地方在于,他们往往深得领导信任,成为团队里的"红人"。…...

企业知识库RAG到底有多难:实战3:向量化与存储

文章目录(零)项目位置(一)整体功能介绍(二)程序入口与参数(三)向量数据库初始化(四)文档 node 构建流程(五)为什么 debug 模式非常重要…...

如何为Python项目配置Taotoken的OpenAI兼容API并快速调用大模型

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 如何为Python项目配置Taotoken的OpenAI兼容API并快速调用大模型 对于希望快速集成大模型能力的Python开发者而言,Taoto…...

5个技巧完全掌握Video Subtitle Remover:AI硬字幕去除终极指南

5个技巧完全掌握Video Subtitle Remover:AI硬字幕去除终极指南 【免费下载链接】video-subtitle-remover 基于AI的图片/视频硬字幕去除、文本水印去除,无损分辨率生成去字幕、去水印后的图片/视频文件。无需申请第三方API,本地实现。AI-based…...

八大网盘直链下载助手:打破下载限制的完整解决方案

八大网盘直链下载助手:打破下载限制的完整解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘…...

从选型到调试:MCP2517FD与ATA6563收发器搭配实战避坑指南

从选型到调试:MCP2517FD与ATA6563收发器搭配实战避坑指南 在工业控制和车载电子系统中,CAN FD总线技术正逐步取代传统CAN总线,成为高速数据传输的新标准。作为硬件工程师,我们常常面临这样的挑战:如何在有限的项目周期…...