
深入探索JVM垃圾回收:ARM服务器垃圾回收的挑战和优化
- 大小:17.7 MB
- 类型:JVM垃圾回收
- 格式:PDF
- 出版:机械工业出版社
- 作者:彭成寒
- 更新:2022-09-13 09:42:37

给大家整理一篇JVM垃圾回收相关的资料,由机械工业出版社出版,作者是彭成寒,介绍了关于JVM、ARM服务器方面,格式为PDF,资源大小17.7 MB,目前在JVM垃圾回收类资源综合评分为:7.9分。
JVM垃圾回收资源推荐
- 深入Java虚拟机:JVM G1GC的算法与实现 PDF 电子书 / 129 MB / 中村成洋 推荐度:
- JVM从入门到入魔 / 3.47 MB / 于思远 推荐度:
- 揭秘Java虚拟机:JVM设计原理与实现 PDF 电子书 / 186.2 MB / 封亚飞 推荐度:
书籍介绍
内容简介
本书介绍JVM和垃圾回收基础知识、垃圾回收原理和实现、JVM垃圾回收的参数、ARM服务器上的GC优化和调整,涉及部分垃圾回收的理论知识,但更关注工程实践。希望通过对实践的分析,让读者了解如何实现一款“令人满意”的垃圾回收器,即满足业务诉求,在停顿时间、吞吐量、资源消耗、实现复杂度、稳定性等方面进行了折中的垃圾回收器。
全书共分为四个部分:
第yi部分,介绍虚拟机执行的基础知识以及垃圾回收的相关知识;
第二部分,介绍JVM中实现的六种垃圾回收算法;
第三部分,介绍JVM提供了哪些参数用于控制垃圾回收的运行;
第四部分,以鲲鹏920为例介绍ARM服务器以及在ARM服务器下如何实现GC才能充分发挥硬件的性能。
作者简介
彭成寒 高级Java工程师,目前主要从事风控系统设计、算法建模、大数据处理等工作,有超过10年的Java和C++开发经验。
目录
- 前言
- 第一部分Java虚拟机和垃圾回收基础知识
- 第1章Java代码执行过程介绍3
- 1.1代码执行过程概述3
- 1.1.1编译执行4
- 1.1.2解释执行4
- 1.1.3混合执行4
- 1.2从C代码执行过程看编译器和操作系统协同工作5
- 1.2.1从源代码到目标代码5
- 1.2.2操作系统如何执行目标代码7
- 1.3从C++代码的执行过程看编译器支持面向对象语言9
- 1.3.1封装支持10
- 1.3.2继承支持11
- 1.3.3多态支持12
- 1.4Java代码执行过程简介13
- 1.4.1Java代码到字节码15
- 1.4.2JVM加载字节码16
- 1.4.3解释执行17
- 1.4.4编译执行22
- 1.5内存管理26
- 1.6线程管理27
- 1.7扩展阅读:JIT概述27
- 第2章JVM中垃圾回收相关的基本知识30
- 2.1GC算法分类30
- 2.2GC涉及的对象表示32
- 2.3GC算法概述34
- 2.3.1复制算法34
- 2.3.2标记清除算法36
- 2.3.3标记压缩算法37
- 2.3.4分代回收38
- 2.4GC的根40
- 2.4.1强根40
- 2.4.2Java引用引入的弱根42
- 2.4.3JVM优化实现引入的弱根43
- 2.4.4JVM中根的构成45
- 2.5安全点46
- 2.5.1解释线程进入安全点46
- 2.5.2编译线程进入安全点47
- 2.5.3本地线程进入安全点48
- 2.5.4JVM内部并发线程进入安全点48
- 2.5.5安全点小结49
- 2.6扩展阅读:垃圾回收器请求内存设计50
- 第二部分JVM垃圾回收器详解
- 第3章串行回收57
- 3.1分代堆内存管理概述57
- 3.1.1堆设计58
- 3.1.2分代边界60
- 3.1.3回收设计思路62
- 3.2新生代内存管理63
- 3.2.1新生代内存分配64
- 3.2.2垃圾回收的触发机制67
- 3.2.3适用于单线程的复制回收算法69
- 3.2.4适用于分代的复制回收算法73
- 3.2.5引用集管理75
- 3.3老生代内存管理79
- 3.3.1堆空间回收的触发80
- 3.3.2堆空间回收算法过程介绍81
- 3.3.3适用于分代的标记压缩算法83
- 3.3.4标记-压缩的优化86
- 3.4扩展阅读:不同的复制算法比较及对程序员的启迪88
- 第4章并发标记清除回收92
- 4.1内存管理92
- 4.2并行的新生代回收95
- 4.2.1一般根集合的并行处理96
- 4.2.2老生代到新生代引用的并行处理97
- 4.2.3卡表的竞争操作介绍99
- 4.2.4并行复制算法卡表设计103
- 4.3并发回收的难点105
- 4.3.1三色标记法105
- 4.3.2难点示意图105
- 4.3.3读屏障处理107
- 4.3.4写屏障之增量标记107
- 4.3.5写屏障之SATB标记108
- 4.4并发的老生代回收108
- 4.4.1内存管理109
- 4.4.2标记清除算法概述112
- 4.4.3并发算法触发时机113
- 4.4.4并发标记清除之初始标记114
- 4.4.5并发标记清除之并发标记116
- 4.4.6并发标记清除之预清理118
- 4.4.7并发标记清除之可终止预清理120
- 4.4.8并发标记清除之再标记123
- 4.4.9并发标记清除之清除124
- 4.4.10并发标记清除之内存空间调整126
- 4.4.11并发标记清除之复位127
- 4.4.12并发算法难点127
- 4.5Full GC131
- 4.6扩展阅读:标记栈溢出的各种处理方法131
- 4.6.1重新标记法132
- 4.6.2全局列表法132
- 4.6.3逆指针法133
- 4.7扩展阅读:元数据内存管理133
- 4.7.1内存管理133
- 4.7.2分配135
- 4.7.3回收135
- 4.7.4元数据管理的优化136
- 第5章并行回收138
- 5.1内存管理138
- 5.1.1内存管理模型140
- 5.1.2NUMA支持141
- 5.1.3内存分配和GC触发流程143
- 5.2Minor GC144
- 5.3Full GC145
- 5.3.1算法概述145
- 5.3.2算法实现与演示148
- 5.4扩展阅读:并行任务的负载均衡机制151
- 5.4.1并行任务的窃取153
- 5.4.2并行任务的终止156
- 第6章垃圾优先160
- 6.1内存管理概述162
- 6.1.1分代下的分区管理163
- 6.1.2新生代大小设计164
- 6.1.3回收机制的设计166
- 6.2引用集设计169
- 6.2.1引用集存储169
- 6.2.2引用集处理流程172
- 6.2.3引用集写入174
- 6.3新生代回收和混合回收176
- 6.3.1回收过程中引用关系处理178
- 6.3.2混合回收导致停顿时间不符合预期的处理方法178
- 6.3.3NUMA-Aware支持180
- 6.3.4云场景的支持180
- 6.3.5并发标记和Minor GC、Mixed GC的交互181
- 6.4并发标记183
- 6.4.1SATB算法介绍183
- 6.4.2增量并发标记算法186
- 6.5Full GC188
- 6.5.1串行实现算法188
- 6.5.2并行实现算法189
- 6.6扩展阅读:OpenJ9中的Balanced GC介绍190
- 6.6.1内存管理的区别191
- 6.6.2大对象设计的区别192
- 6.6.3回收的区别193
- 6.6.4并发标记的区别194
- 6.6.5Full GC与Balanced GC的区别195
- 第7章Shenandoah196
- 7.1内存模型198
- 7.1.1内存分配198
- 7.1.2垃圾回收的触发198
- 7.2并发标记设计200
- 7.3并发转移设计201
- 7.3.1引用不变性202
- 7.3.2目标空间不变性203
- 7.3.3源空间不变性205
- 7.4垃圾回收实现206
- 7.4.1垃圾回收策略206
- 7.4.2垃圾回收模式207
- 7.4.3正常回收算法208
- 7.4.4优化模式垃圾回收209
- 7.4.5垃圾回收的降级209
- 7.4.6遍历回收算法210
- 7.4.7垃圾回收触发的时机211
- 7.4.8其他细节211
- 7.5扩展阅读:OpenJ9中的实时垃圾回收器Metronome介绍214
- 第8章ZGC219
- 8.1内存管理222
- 8.1.1内存管理模型222
- 8.1.2高速分配设计224
- 8.2回收设计226
- 8.2.1算法概述227
- 8.2.2视图状态229
- 8.2.3读屏障232
- 8.2.4高效的标记和转移设计234
- 8.2.5垃圾回收触发的时机239
- 8.3垃圾回收实现243
- 8.3.1回收实现243
- 8.3.2多线程高效地标记244
- 8.3.3多线程高效地转移246
- 8.3.4标记和重定位合并的优缺点246
- 8.4ZGC新特性概览247
- 8.4.1并发类卸载248
- 8.4.2并发根扫描249
- 8.5扩展阅读:分配预测模型的理论基础251
- 第三部分JVM中垃圾回收相关参数介绍
- 第9章GC通用参数259
- 9.1GC生产参数259
- 9.1.1GC选择相关参数259
- 9.1.2GC工作线程相关参数261
- 9.1.3内存设置相关参数263
- 9.1.4停顿时间相关参数274
- 9.1.5执行效率相关参数275
- 9.1.6大页和NUMA参数284
- 9.1.7GC日志相关参数285
- 9.1.8其他参数285
- 9.2GC实验参数288
- 9.2.1GC选择相关参数288
- 9.2.2引用处理相关参数288
- 9.2.3GC任务均衡相关参数288
- 9.3GC 诊断参数289
- 9.3.1GC工作线程相关参数289
- 9.3.2GC校验相关参数290
- 9.3.3其他参数291
- 9.4可动态调整的参数292
- 9.5重要参数小结293
- 第10章Parallel GC参数294
- 10.1生产参数294
- 10.1.1并行压缩相关参数294
- 10.1.2并行复制相关参数296
- 10.2重要参数小结296
- 第11章CMS参数298
- 11.1生产参数298
- 11.1.1老生代分配相关参数298
- 11.1.2老生代合并相关参数300
- 11.1.3空闲列表管理相关参数300
- 11.1.4老生代预清理相关参数303
- 11.1.5老生代再标记相关参数306
- 11.1.6Minor GC相关参数307
- 11.1.7老生代GC触发控制相关参数308
- 11.1.8老生代并行/并发控制相关参数310
- 11.1.9其他参数311
- 11.2诊断参数313
- 11.2.1老生代碎片化相关参数313
- 11.2.2Minor GC效率相关参数314
- 11.2.3其他参数314
- 11.3可动态调整的参数314
- 11.4重要参数小结315
- 第12章G1参数316
- 12.1生产参数316
- 12.1.1并发标记相关参数316
- 12.1.2引用集处理相关参数318
- 12.1.3内存设置相关参数321
- 12.1.4Minor GC相关参数321
- 12.1.5GC触发控制相关参数322
- 12.1.6混合回收相关参数322
- 12.2实验参数323
- 12.2.1内存设置相关参数323
- 12.2.2Minor GC相关参数324
- 12.2.3混合回收相关参数325
- 12.2.4其他参数325
- 12.3可动态调整的参数326
- 12.4诊断参数326
- 12.5重要参数小结327
- 第13章Shenandoah参数328
- 13.1生产参数328
- 13.1.1垃圾回收模式相关参数328
- 13.1.2垃圾回收策略相关参数329
- 13.2实验参数329
- 13.2.1内存设置相关参数329
- 13.2.2垃圾回收策略及相关参数330
- 13.2.3并发标记相关参数335
- 13.3诊断参数336
- 13.4重要参数小结338
- 第14章ZGC参数339
- 14.1生产参数339
- 14.2诊断参数341
- 14.3重要参数小结342
- 第四部分ARM服务器上的GC挑战和优化
- 第15章泰山服务器概述345
- 15.1ARM架构346
- 15.1.1ARM介绍346
- 15.1.2ARMv8-A特性348
- 15.2鲲鹏处理器353
- 15.2.1芯片架构353
- 15.2.2内存管理子系统355
- 15.2.3流水线技术356
- 15.2.4内存一致性357
- 15.3泰山服务器358
- 第16章AArch64平台上的GC挑战和优化363
- 16.1内存序363
- 16.2众核架构对性能的影响369
- 16.3NUMA对性能的影响370
- 16.4其他影响370
以上就是本次关于书籍资源的介绍和部分内容,我们还整理了以往更新的其它相关电子书资源内容,可以在下方直接下载,关于相关的资源我们在下方做了关联展示,需要的朋友们也可以参考下。
JVM垃圾回收相关资源
-
多线程、JVM复习面试强化训练100题
本教程是一套多线程、JVM复习amp;面试amp;强化训练100题合集,面试更有信心,面试不再发愁。包含多线程面试60题、jvm面试40题详解,本课件只有100道题目及简短的答案提示。讲解过程中,我们还会讲到其它课件的内容,除此之外,还有大量的具体代码实战,需要的朋友可下载! JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机不仅是一种跨平台的软件,而且是一种新的网
大小:437 KB面试
-
JVM从入门到入魔
JVM是可运行Java代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。JVM是运行在操作系统之上的,它与硬件没有直接的交互 JVM一直是java知识里面进阶阶段的重要部分,如果希望在java领域研究的更深入,则JVM则是如论如何也避开不了的话题,本系列试图通过简洁易读的方式,讲解JVM必要的知识点
大小:3.47 MBJVM
-
《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》源代码
本书第1版两年内印刷近10次,4家网上书店的评论近4000条,98%以上的评论全部为5星级的好评,是整个Java图书领域公认的经典著作和超级畅销书,繁体版在台湾也十分受欢迎。第2版在第1版的基础上做了很大的改进:根据最新的JDK1.7对全书内容进行了全面的升级和补充;增加了大量处理各种常见JVM问题的技巧和最佳实践;增加了若干与生产环境相结合的实战案例;对1版中的错误和不足之处的修正;等等。第2版不仅技术更新、内容更丰富,而且实战性更强
大小:3.8 MBJava配套资源
-
揭秘Java虚拟机:JVM设计原理与实现
《揭秘Java虚拟机》Java工程师高质量成长的必读本,谷歌官方认可的android开发语言Kotlin的基石。看透JVM设计思想与原理,彻底领悟JAVA编程精髓,以不变应万变!
大小:186.2 MBJava虚拟机电子书
-
深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)
大小:253 MBJava虚拟机电子书
-
Java性能优化实践(JVM调优策略/工具与技巧)
编辑推荐 在当前的互联网开发模式下,系统访问量日增、代码臃肿,各种性能问题纷涌而至。性能优化作为一个常谈常新的话题,受到越来越多开发者的关注。而Java是一门使用广泛的语言,社区生态中积攒了大量宝贵的性能优化经验。 1.作为一本性能调优方面的实用指南,本书从实验科学的角度将JVM调优的技术原理与方法论相结合,并在此基础上提供了可选择的工具。 2.通过对各方面的深入研究,本书能让使用复杂技术栈的中高级Java技术专家以量化和
大小:69 MBJava优化
-
实战Java虚拟机:JVM故障诊断与性能优化
实战Java虚拟机:JVM故障诊断与性能优化 [葛一鸣] 2017年版
大小:35.76MBJava虚拟机电子书
-
深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)
(1)这本书值得全部Java技术人员读3遍,值得Java技术人员读3遍,值得读3遍! (2)依据JDK12和JDK13EA版本全方位升级,增加內容近50%,并对第二版中模棱两可、缺陷和不正确內容开展了调整 。 (3)计算机图书行业的永远的丰碑,前两版总计包装印刷36次,销售量超出三十万册,俩家网店评价总数超出90000条,內容近乎零恶意差评。 (4)从Java技术性管理体系、全自动代码优化、vm虚拟机实行分系统、程序流程编译器与代码设计、高效率高并发五个层面全
大小:38 MBJava虚拟机电子书
-
JRockit权威指南:深入理解JVM
深入JVM内部 剖析Java虚拟机原理 阐明Java性能提升关键 莫枢(RednaxelaFx) 阿里中间件团队推荐JVM参考书
大小:223.7 MBJRockit电子书
参与送书
学习笔记

1.背景 Java语言相比于C和C++,一个最大的特点就是不需要程序员自己手动去申请和释放内存,这一切交由JVM来完成。在Java中,运行时的数据区域分为程序计数器、Java虚拟机栈、本地方法栈、方法区和堆。其中,程序计数器、虚拟机栈和本地方法栈是线程私有的,线程销毁后自动释放。垃圾回收的行为发生在堆和方法区,主要是堆,而堆中存储的主要是对象。那么自然而然地就会……

前言 无论你是使用何种编程语言,在日常的开发过程中,都会不可避免的要处理异常。今天本文将尝试讲解一些JVM如何处理异常问题,希望能够讲清楚这个内部的机制,如果对大家有所启发和帮助,则甚好。 当异常不仅仅是异常 我们在标题中提到了异常,然而这里指的异常并不是单纯的Exception,而是更为宽泛的Throwable。只是我们工作中习以为常的将它们(错误地)这样称谓。……

很多时候我们需要在项目中读取外部属性文件,用到了System.getProperty("")方法。这个方法需要配置JVM系统属性,那么如何配置呢? 那就是使用java -D 配置系统属性。 使用格式是:java -Dkey=value 比如新建一个测试类,如下: public class Test { public static void main(String[] args){ System.out.println(System.getProperty("configurePath")); }} 这段代码直接执行的话,会输出null 接下来需要配置configurePath属性了,……