网站

更多书籍点击进入>> CiCi岛

下载

电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍

  • 电子书下载(皮皮云盘-点击“普通下载”)
  • 购买正版

封页

编辑推荐

★没有一招鲜似的调优秘籍或包罗万象的性能百科   ★GC性能调优需要专门的知识技能才能解决   ★解决的GC性能问题越多,技艺才会越精湛   ★《深入理解JVM & G1 GC》不仅有技术实践,还有设计原理和目标   ★让你深入掌握GC,积累更多技术与经验,   ★更好地提升产品性能

内容简介

G1GC提出了不确定性Region,每个空闲Region不是为某个固定年代准备的,它是灵活的,需求驱动的,所以G1GC代表了先进性。   《深入理解JVM&G1GC》主要为学习Java语言的学生、初级程序员提供GC的使用参考建议及经验,着重介绍了G1GC。中国的软件开发行业已经有几十年了,从目前的行业发展来看,单纯的软件公司很难有发展,目前流行的云计算、物联网企业实际上是综合性IT技术的整合,这就需要有综合能力的程序员。《深入理解JVM&G1GC》作者力求做到知识的综合传播,而不是仅仅针对Java虚拟机和GC调优进行讲解,也力求每一章节都有实际的案例支撑。《深入理解JVM&G1GC》具体包括以下几方面:JVM基础知识、GC基础知识、G1GC的深入介绍、G1GC调优建议、JDK自带工具使用介绍等。   通读《深入理解JVM&G1GC》后,读者可以深入了解G1GC性能调优的许多主题及相关的综合性知识。读者也可以把《深入理解JVM&G1GC》作为参考,对于感兴趣的主题,直接跳到相应章节寻找答案。

作者简介

★周明耀           12年投资银行项目、分布式计算项目工作经验,IBM开发者论坛专栏作者、InfoQ专栏作者。           一名IT技术狂热爱好者,一名顽强到底的工程师。推崇技术创新、思维创新,对于新技术非常热爱,致力于技术研发、研究,通过发布文章、书籍、互动活动的形式积极推广软件技术。           欢迎添加微信“michael_tec”,共同探讨IT技术话题。

目 录

目  录

序 VII
前言 IX
第1章 JVM & GC基础知识 1
1.1 引言 2
1.2 基本术语 3
1.2.1 Java相关术语 4
1.2.2 JVM/GC通用术语 24
1.2.3 G1涉及术语 56
1.3 本章小结 62


第2章 JVM & GC深入知识 63
2.1 Java虚拟机内存模型 64
2.1.1 程序计数器 65
2.1.2 虚拟机栈 66
2.1.3 本地方法栈 72
2.1.4 Java堆 73
2.1.5 方法区 79
2.2 垃圾收集算法 82
2.2.1 引用计数法 82
2.2.2 根搜索算法 83
2.2.3 标记-清除算法(Mark-Sweep) 85
2.2.4 复制算法(Copying) 87
2.2.5 标记-压缩算法(Mark-Compact) 89
2.2.6 增量算法(Incremental Collecting) 90
2.2.7 分代收集算法(Generational Collecting) 91
2.3 Garbage Collection 92
2.3.1 GC概念 92
2.3.2 垃圾收集器分类 93
2.3.3 Serial收集器 94
2.3.4 ParNew收集器 96
2.3.5 Parallel收集器 99
2.3.6 CMS收集器 102
2.3.7 Garbage First(G1)GC 106
2.4 常见问题解析 112
2.4.1 jmap -heap或-histo不能用 112
2.4.2 YGC越来越慢 112
2.4.3 Java永久代去哪儿了 114
2.5 本章小结 116

第3章 G1 GC应用示例 117
3.1 范例程序 118
3.2 选项解释及应用 124
3.3 本章小结 166

第4章 深入G1 GC 167
4.1 G1 GC概念简述 168
4.1.1 背景知识 168
4.1.2 G1的垃圾回收机制 169
4.1.3 G1的区间设计灵感 169
4.2 G1 GC分代管理 172
4.2.1 年轻代 172
4.2.2 年轻代回收暂停 173
4.2.3 大对象区间 174
4.2.4 混合回收暂停 176
4.2.5 回收集合及其重要性 178
4.2.6 RSet及其重要性 178
4.2.7 并行标记循环 182
4.2.8 评估失败和完全回收 186
4.3 G1 GC使用场景 186
4.4 G1 GC论文原文翻译(部分) 187
4.4.1 开题 187
4.4.2 数据结构/机制 188
4.4.3 未来展望 190
4.5 本章小结 191

第5章 G1 GC性能优化方案 192
5.1 G1的年轻代回收 193
5.2 年轻代优化 203
5.3 并行标记阶段优化 205
5.4 混合回收阶段 207
5.4.1 初步介绍 207
5.4.2 深入介绍 208
5.5 如何避免出现GC失败 210
5.6 引用处理 211
5.6.1 观察引用处理 212
5.6.2 引用处理优化 213
5.7 本章小结 214

第6章 JVM诊断工具使用介绍 215
6.1 SA基础介绍 216
6.2 SA工具使用实践 217
6.2.1 如何启动SA 217
6.2.2 SA原理及使用介绍 222
6.3 其他工具介绍 231
6.3.1 GCHisto 231
6.3.2 JConsole 232
6.3.3 VisualVM 236
6.4 本章小结 238

前 言

★序

这是我第一次为人写序,心中不免忐忑,引用余光中先生对于写序的感受:“我为人写序,于人为略而于文为详,用意也无非要就文本去探人本,亦即其艺术人格;自问与中国传统的序跋并不相悖,但手段毕竟不同了。”周明耀的书追求的是人本,我则尽力而为。

  周明耀是我以前的同事,我们是认识十多年的朋友,同时我也是他婚礼的伴郎,见证了他的一步步成长。周明耀无论对工作、技术,或者社会生活,都有着自己独特的见解。他始终对技术充满了敬畏之心,学无止境,并付诸实践。因此,才有了这本书。

  以我对GC的理解,想要学习GC,首先需要理解为什么需要GC。随着应用程序所应对的业务越来越庞大、复杂,用户越来越多,没有GC就不能保证应用程序的正常进行。而经常造成STW的GC又跟不上实际的需求,所以才会不断地尝试对GC进行优化。正如周明耀在文中描述的,HotSpot有这么多的垃圾回收器(SerialGC、ParallelGC、ConcurrentMarkSweepGC),为什么还要发布GarbageFirst(G1)GC?原因就是这个。

  当今的商业模式,更多依赖市场的力量,不断淘汰旧的行业,把有限的资源让给那些竞争力更强、利润率更高的企业。类似地,硅谷也在不断淘汰过时的人员,从全世界吸收新鲜血液。经过半个多世纪的发展,在硅谷地区形成了只有卓越才能生存的文化理念。本着这样的理念,GC承担了淘汰垃圾、保存优良资产的任务。正如周明耀所说,随着G1GC的出现,GC从传统的连续堆内存布局设计,逐渐走向不连续内存块,这是通过引入Region概念实现的,也就是说,由一堆不连续的Region组成了堆内存。其实也不能说是不连续的,只是它从传统的物理连续逐渐变为逻辑上的连续,这是通过Region的动态分配方式实现的,我们可以把一个Region分配给Eden、Survivor、老年代、大对象区间、空闲区间中的任意一个,而不是固定它的作用,因为越是固定,越是呆板。

  总的来说,本书对JavaGC机制的分析深入浅出,是对大数据Java内存回收的优秀实践。读完茅塞顿开、受益匪浅。很多技术细节应用之后,对产品性能有明显提升。在此感谢周明耀的分享,希望他能够写出更多优秀的书籍。

  华为南京研究所大数据产品部维护经理吴骏

  ★前言

  7岁那年,当我合上《上下五千年》一套三册全书时,我对自己说,我想当个作家。这一晃27年了,等待了27年,我的第一本书《大话Java性能优化》在2016年4月正式面世,2016年8月第二次印刷,感谢读者的厚爱。第一次印刷时出现一些错别字,请原谅编辑小姑娘,99万字对她来说确实太多了,这是我的责任,未来一定尽全力避免。《深入理解JVM&G1GC》是我的第二本书,也即将面世。对于我的每一本书,我都怀着忐忑、惊喜的心情,就像第一次面对我的女儿“小顽子”,给她取这个小名,是希望她顽强到底,因为我相信,你若顽强到底,一切皆有可能。

  我喜欢看书,每年购买的书接近100本,也喜欢技术积累。一直没有出书的想法,直到遇到了电子工业出版社的董老师,在深圳南湖的一席畅谈后,我决定做一位业余的技术作家,致力于中国软件开发行业的技术推广、普及、推动。

  每年都要面试很多学生,我感觉中国的大学不太注重实际项目开发能力的培养,较为教条,这也是我的系统丛书首先从Java技术开始的原因,它更加接地气。本书主要为学习Java语言的学生、初级程序员提供JVM和GC的使用和优化建议及经验,力求做到知识的综合传播,而不是仅仅针对Java虚拟机调优进行讲解。本书具体包括以下几方面:JVM基础知识、GC基础知识、G1GC的深入介绍、G1GC调优建议、JDK自带工具使用介绍等。

  本书基于JDK8,总的来说,没有一招鲜式的性能调优秘籍或包罗万象的性能百科,能让你摇身一变成为老练的GC性能调优专家。相当数量的GC性能问题还需要专门的知识技能才能解决。性能调优在很大程度上是一门艺术。解决的GC性能问题越多,技艺才会越精湛。我们不只要关心GC的持续演进,也要积极地去了解它的设计原理和设计目标。

  最后,自我介绍一下,我叫周明耀,研究生学历,12年工作经验,IBM开发者论坛专家作者。我是一名IT技术狂热爱好者,一名九三学社社员,一名顽强到底的工程师。我推崇技术创新、思维创新,对于新技术非常的热爱。

  感谢我的家人,和谐的家庭帮助我完成了这本书。我的妻子,她美丽、细心、博学、偶尔不那么温柔,但是我很爱她。我的小顽子,她天生性格很像我,希望她能够踏踏实实做人,保持创新精神,平平安安、健健康康地生活下去。感谢我妻子的父母、我的父母,他们帮我照顾小孩,我才有时间编写此书。感谢浙江省特级教师、杭州高级化学老师郑克良老师,郑老师的一句永远不要放弃,推动着我多年的发展。感谢数学老师张老师在公开场合对我智商的褒奖,第一次收获这样的赞赏,对我这样内向的孩子是多么的重要,谢谢。

  这本书献给我记忆中的爷爷奶奶、外公外婆,你们给我的都是最美的回忆。

  我相信这本书不是终点,它是麦克叔叔此生一系列技术书籍的一员,咱们下一本书见。

媒体评论

总的来说,本书对Java GC机制的分析深入浅出,是对大数据Java内存回收的优秀实践。读完茅塞顿开、受益匪浅。很多技术细节应用之后,对产品性能有明显提升。在此感谢周明耀的分享,希望他能够写出更多优秀的书籍。                                                                                  ——华为南京研究所大数据产品部维护经理 吴骏         每年都要面试很多学生,我感觉中国的大学不太注重实际项目开发能力的培养,较为教条,这也是我的系列丛书首先从Java技术开始的原因,它更加接地气。本书主要为学习Java语言的学生、初级程序员提供JVM和GC的使用和优化建议及经验,力求做到知识的综合传播,而不是仅仅针对Java虚拟机调优进行讲解。本书具体包括以下几方面:JVM基础知识、GC基础知识、G1 GC的深入介绍、G1 GC调优建议、JDK自带工具使用介绍等。                                                                                                                                                                                                                        ——周明耀

深入理解JVM & G1 GC相关推荐

  1. 深入理解JVM 一GC(下) G1 Garbage Collector

    文章目录 关于java程序性能 响应能力 吞吐量 G1 Garbage Collector g1收集器的设计目标: G1的设计规划,是要替换掉CMS. 之前的GC收集器对Heap的划分: G1对Hea ...

  2. 深入理解JVM(2)——GC算法与内存分配策略

    说起垃圾收集(Garbage Collection, GC),想必大家都不陌生,它是JVM实现里非常重要的一环,JVM成熟的内存动态分配与回收技术使Java(当然还有其他运行在JVM上的语言,如Sca ...

  3. 深入理解JVM——虚拟机GC

    对象是否存活 Java的GC基于可达性分析算法(Python用引用计数法),通过可达性分析来判定对象是否存活.这个算法的基本思想是通过一系列"GC Roots"的对象作为起始点,从 ...

  4. 深入理解JVM(4)——如何优化Java GC「译」

    本文翻译自Sangmin Lee发表在Cubrid上的"Become a Java GC Expert"系列文章的第三篇<How to Tune Java Garbage C ...

  5. 深入理解 Java G1 垃圾收集器GC调优

    本文首先简单介绍了垃圾收集的常见方式,然后再分析了G1收集器的收集原理,相比其他垃圾收集器的优势,最后给出了一些调优实践. 一,什么是垃圾回收 首先,在了解G1之前,我们需要清楚的知道,垃圾回收是什么 ...

  6. java g1 gc ref proc_深入理解垃圾收集器的G1及日志分析

    尽管Hotspot 最新的垃圾回收器G1是在2006年推出的.但是G1从推行至今的市场反响来看,但现在足以证明这款垃圾收集器是经得起考验的,从java9开始,就默认为G1垃圾收集器.G1是一款面向服务 ...

  7. java -g_【JVM】7、深入理解Java G1垃圾收集器

    本文首先简单介绍了垃圾收集的常见方式,然后再分析了G1收集器的收集原理,相比其他垃圾收集器的优势,最后给出了一些调优实践. 一,什么是垃圾回收 首先,在了解G1之前,我们需要清楚的知道,垃圾回收是什么 ...

  8. 面试篇之JVM(GC 可达性分析 回收算法 卡表 G1)

    面试篇之JVM 面试篇之JVM GC 对象存活判断 分代回收理论 常见回收算法 HotSpot实现细节 记忆集与卡表 读写屏障 回收器 并发标记 G1 面试篇之JVM GC 美团 1.JVM怎么判断一 ...

  9. jvm对象从新生代到老年代_深入理解jvm内存模型以及gc原理

    整体架构 Jvm = 类加载器 + 执行引擎 + 运行时数据区域 类加载器 ● 作用 类加载器是将编译好的class文件加载到内存中,并进行验证.初始化等步骤,形成能被jvm直接使用的类型. ● 加载 ...

  10. 转:深入理解Java G1垃圾收集器

    本文首先简单介绍了垃圾收集的常见方式,然后再分析了G1收集器的收集原理,相比其他垃圾收集器的优势,最后给出了一些调优实践. 一,什么是垃圾回收 首先,在了解G1之前,我们需要清楚的知道,垃圾回收是什么 ...

最新文章

  1. mysql 4.0.27 下载,CentOS编译Mysql 4.0.27数据库问题解决
  2. C语言 一维数组 练习
  3. linux tr 字符串,linux tr命令-转换或删除输入的字符的
  4. 数字图像处理实验(8):PROJECT 04-04,Highpass Filtering Using a Lowpass Image
  5. python中静态方法可以访问对象变量_python 面向对象-实例变量、类变量、实例方法、类方法、静态方法...
  6. cad方格网高程lisp编程_分享:方格网法土方工程量计算实例例题(疏浚清淤工程)...
  7. 【PetShop 4.0学习】4.数据库结构
  8. 【教育】斯坦福大学——人工智能本科4年课程清单
  9. 用python程序化交易名单_python程序化交易神器——tushare
  10. SQL 面试题及答案(一)
  11. 表妹即将去读研,我送了她11个建议
  12. Mac外接2k显示器遇到的问题
  13. 【ASP.NET Web API教程】1 ASP.NET Web API入门
  14. git指定版本openwrt源码_关于Github Action自动编译Lean_Openwrt的配置修改问题
  15. 70.爬楼梯 (力扣leetcode) 博主可答疑该问题
  16. 【知识点总结】电力系统基础
  17. 【HTML——线条雨落】(效果+代码)
  18. 十分钟超简单完成百度地图3.0离线功能
  19. 群体Polymorphism information content(PIC)、 Nei diversity index (Nei s) 和 Shannon index (I)计算方法
  20. 新手必知的用户留存率知识

热门文章

  1. UE4(虚幻4) 教学网站等资源推荐
  2. 作为音乐创作人,你可知道?有可以自己写歌词的软件,专门写歌词的软件,创作歌词的软件,帮忙写歌词的软件
  3. 软件工程 超市库存管理系统 可行性研究-需求分析
  4. mac系统postman+newman生成测试报告
  5. 微信小程序-实现保存图片功能的3种方式
  6. esp8266教程:GPIO输入输出模式
  7. QRCode.js生成二维码
  8. 使用pytorch实现crnn
  9. 12306 模拟登录
  10. ssm框架实现用户登录的拦截器和过滤器