深入探索JVM垃圾回收:ARM服务器垃圾回收的挑战和优化

深入探索JVM垃圾回收:ARM服务器垃圾回收的挑战和优化

  • 大小:17.7 MB
  • 类型:JVM垃圾回收
  • 格式:PDF
  • 出版:机械工业出版社
  • 作者:彭成寒
  • 更新:2022-09-13 09:42:37
vip 免费获取(已有187人参与)
关注公众号免费送书
版权投诉 / 资源反馈(本资源由用户 胡志强 投稿)

给大家整理一篇JVM垃圾回收相关的资料,由机械工业出版社出版,作者是彭成寒,介绍了关于JVM、ARM服务器方面,格式为PDF,资源大小17.7 MB,目前在JVM垃圾回收类资源综合评分为:7.9分。

JVM垃圾回收资源推荐

书籍介绍

内容简介

本书介绍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复习面试强化训练100题

    本教程是一套多线程、JVM复习amp;面试amp;强化训练100题合集,面试更有信心,面试不再发愁。包含多线程面试60题、jvm面试40题详解,本课件只有100道题目及简短的答案提示。讲解过程中,我们还会讲到其它课件的内容,除此之外,还有大量的具体代码实战,需要的朋友可下载! JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机不仅是一种跨平台的软件,而且是一种新的网

    大小:437 KB面试

  • JVM从入门到入魔

    JVM从入门到入魔

    JVM是可运行Java代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。JVM是运行在操作系统之上的,它与硬件没有直接的交互 JVM一直是java知识里面进阶阶段的重要部分,如果希望在java领域研究的更深入,则JVM则是如论如何也避开不了的话题,本系列试图通过简洁易读的方式,讲解JVM必要的知识点

    大小:3.47 MBJVM

  • 《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》源代码

    《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》源代码

    本书第1版两年内印刷近10次,4家网上书店的评论近4000条,98%以上的评论全部为5星级的好评,是整个Java图书领域公认的经典著作和超级畅销书,繁体版在台湾也十分受欢迎。第2版在第1版的基础上做了很大的改进:根据最新的JDK1.7对全书内容进行了全面的升级和补充;增加了大量处理各种常见JVM问题的技巧和最佳实践;增加了若干与生产环境相结合的实战案例;对1版中的错误和不足之处的修正;等等。第2版不仅技术更新、内容更丰富,而且实战性更强

    大小:3.8 MBJava配套资源

  • 揭秘Java虚拟机:JVM设计原理与实现

    揭秘Java虚拟机:JVM设计原理与实现

    《揭秘Java虚拟机》Java工程师高质量成长的必读本,谷歌官方认可的android开发语言Kotlin的基石。看透JVM设计思想与原理,彻底领悟JAVA编程精髓,以不变应万变!

    大小:186.2 MBJava虚拟机电子书

  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)

    深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)

    大小:253 MBJava虚拟机电子书

  • Java性能优化实践(JVM调优策略/工具与技巧)

    Java性能优化实践(JVM调优策略/工具与技巧)

    编辑推荐 在当前的互联网开发模式下,系统访问量日增、代码臃肿,各种性能问题纷涌而至。性能优化作为一个常谈常新的话题,受到越来越多开发者的关注。而Java是一门使用广泛的语言,社区生态中积攒了大量宝贵的性能优化经验。 1.作为一本性能调优方面的实用指南,本书从实验科学的角度将JVM调优的技术原理与方法论相结合,并在此基础上提供了可选择的工具。 2.通过对各方面的深入研究,本书能让使用复杂技术栈的中高级Java技术专家以量化和

    大小:69 MBJava优化

  • 实战Java虚拟机:JVM故障诊断与性能优化

    实战Java虚拟机:JVM故障诊断与性能优化

    实战Java虚拟机:JVM故障诊断与性能优化 [葛一鸣] 2017年版

    大小:35.76MBJava虚拟机电子书

  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)

    深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)

    (1)这本书值得全部Java技术人员读3遍,值得Java技术人员读3遍,值得读3遍! (2)依据JDK12和JDK13EA版本全方位升级,增加內容近50%,并对第二版中模棱两可、缺陷和不正确內容开展了调整 。 (3)计算机图书行业的永远的丰碑,前两版总计包装印刷36次,销售量超出三十万册,俩家网店评价总数超出90000条,內容近乎零恶意差评。 (4)从Java技术性管理体系、全自动代码优化、vm虚拟机实行分系统、程序流程编译器与代码设计、高效率高并发五个层面全

    大小:38 MBJava虚拟机电子书

  • JRockit权威指南:深入理解JVM

    JRockit权威指南:深入理解JVM

    深入JVM内部 剖析Java虚拟机原理 阐明Java性能提升关键 莫枢(RednaxelaFx) 阿里中间件团队推荐JVM参考书

    大小:223.7 MBJRockit电子书

参与送书

学习笔记

1小时41分钟前回答

浅谈JVM垃圾回收之哪些对象可以被回收

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

22小时44分钟前回答

JVM如何处理异常深入详解

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

9小时18分钟前回答

通过System.getProperty配置JVM系统属性

很多时候我们需要在项目中读取外部属性文件,用到了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属性了,……