首页编程java编程深入理解java虚拟机?深入理解java虚拟机第四版

深入理解java虚拟机?深入理解java虚拟机第四版

编程之家2026-05-27651次浏览

这篇文章给大家聊聊关于深入理解java虚拟机,以及深入理解java虚拟机第四版对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

深入理解java虚拟机?深入理解java虚拟机第四版

深入理解Java虚拟机:JVM高级特性与最佳实践的内容简介

作为一位java程序员,你是否也曾经想深入理解java虚拟机,但是却被它的复杂和深奥拒之门外?没关系,《深入理解java虚拟机:jvm高级特性与最佳实践》极尽化繁为简之妙,能带领你在轻松中领略java虚拟机的奥秘。《深入理解java虚拟机:jvm高级特性与最佳实践》是近年来国内出版的唯一一本与java虚拟机相关的专著,也是唯一一本同时从核心理论和实际运用这两个角度去探讨java虚拟机的著作,不仅理论分析得透彻,而且书中包含的典型案例和最佳实践也极具现实指导意义。

全书共分为五大部分。第一部分从宏观的角度介绍了整个java技术体系的过去、现在和未来,以及如何独立地编译一个openjdk7,这对理解后面的内容很有帮助。第二部分讲解了jvm的自动内存管理,包括虚拟机内存区域的划分原理以及各种内存溢出异常产生的原因;常见的垃圾收集算法以及垃圾收集器的特点和工作原理;常见的虚拟机的监控与调试工具的原理和使用方法。第三部分分析了虚拟机的执行子系统,包括class的文件结构以及如何存储和访问class中的数据;虚拟机的类创建机制以及类加载器的工作原理和它对虚拟机的意义;虚拟机字节码的执行引擎以及它在实行代码时涉及的内存结构。第四部分讲解了程序的编译与代码的优化,阐述了泛型、自动装箱拆箱、条件编译等语法糖的原理;讲解了虚拟机的热点探测方法、hotspot的即时编译器、编译触发条件,以及如何从虚拟机外部观察和分析jit编译的数据和结果。第五部分探讨了java实现高效并发的原理,包括jvm内存模型的结构和操作;原子性、可见性和有序性在java内存模型中的体现;先行发生原则的规则和使用;线程在java语言中的实现原理;虚拟机实现高效并发所做的一系列锁优化措施。

《深入理解java虚拟机:jvm高级特性与最佳实践》适合所有java程序员、系统调优师和系统架构师阅读。

深入理解Java虚拟机的目录

前言

致谢

第一部分走近Java

深入理解java虚拟机?深入理解java虚拟机第四版

第1章走近Java/ 2

1.1概述/ 2

1.2 Java技术体系/ 3

1.3 Java发展史/ 5

1.4展望Java技术的未来/ 9

1.4.1模块化/ 9

深入理解java虚拟机?深入理解java虚拟机第四版

1.4.2混合语言/ 9

1.4.3多核并行/ 11

1.4.4进一步丰富语法/ 12

1.4.5 64位虚拟机/ 13

1.5实战:自己编译JDK/ 13

1.5.1获取JDK源码/ 13

1.5.2系统需求/ 14

1.5.3构建编译环境/ 15

1.5.4准备依赖项/ 17

1.5.5进行编译/ 18

1.6本章小结/ 21

第二部分自动内存管理机制

第2章 Java内存区域与内存溢出异常/ 24

2.1概述/ 24

2.2运行时数据区域/ 25

2.2.1程序计数器/ 25

2.2.2 Java虚拟机栈/ 26

2.2.3本地方法栈/ 27

2.2.4 Java堆/ 27

2.2.5方法区/ 28

2.2.6运行时常量池/ 29

2.2.7直接内存/ 29

2.3对象访问/ 30

2.4实战:OutOfMemoryError异常/ 32

2.4.1 Java堆溢出/ 32

2.4.2虚拟机栈和本地方法栈溢出/ 35

2.4.3运行时常量池溢出/ 38

2.4.4方法区溢出/ 39

2.4.5本机直接内存溢出/ 41

2.5本章小结/ 42

第3章垃圾收集器与内存分配策略/ 43

3.1概述/ 43

3.2对象已死?/ 44

3.2.1引用计数算法/ 44

3.2.2根搜索算法/ 46

3.2.3再谈引用/ 47

3.2.4生存还是死亡?/ 48

3.2.5回收方法区/ 50

3.3垃圾收集算法/ 51

3.3.1标记-清除算法/ 51

3.3.2复制算法/ 52

3.3.3标记-整理算法/ 54

3.3.4分代收集算法/ 54

3.4垃圾收集器/ 55

3.4.1 Serial收集器/ 56

3.4.2 ParNew收集器/ 57

3.4.3 Parallel Scavenge收集器/ 59

3.4.4 Serial Old收集器/ 60

3.4.5 Parallel Old收集器/ 61

3.4.6 CMS收集器/ 61

3.4.7 G1收集器/ 64

3.4.8垃圾收集器参数总结/ 64

3.5内存分配与回收策略/ 65

3.5.1对象优先在Eden分配/ 66

3.5.2大对象直接进入老年代/ 68

3.5.3长期存活的对象将进入老年代/ 69

3.5.4动态对象年龄判定/ 71

3.5.5空间分配担保/ 73

3.6本章小结/ 75

第4章虚拟机性能监控与故障处理工具/ 76

4.1概述/ 76

4.2 JDK的命令行工具/ 76

4.2.1 jps:虚拟机进程状况工具/ 79

4.2.2 jstat:虚拟机统计信息监视工具/ 80

4.2.3 jinfo:Java配置信息工具/ 82

4.2.4 jmap:Java内存映像工具/ 82

4.2.5 jhat:虚拟机堆转储快照分析工具/ 84

4.2.6 jstack:Java堆栈跟踪工具/ 85

4.3 JDK的可视化工具/ 87

4.3.1 JConsole:Java监视与管理控制台/ 88

4.3.2 VisualVM:多合一故障处理工具/ 96

4.4本章小结/ 105

第5章调优案例分析与实战/ 106

5.1概述/ 106

5.2案例分析/ 106

5.2.1高性能硬件上的程序部署策略/ 106

5.2.2集群间同步导致的内存溢出/ 109

5.2.3堆外内存导致的溢出错误/ 110

5.2.4外部命令导致系统缓慢/ 112

5.2.5服务器JVM进程崩溃/ 113

5.3实战:Eclipse运行速度调优/ 114

5.3.1调优前的程序运行状态/ 114

5.3.2升级JDK 1.6的性能变化及兼容问题/ 117

5.3.3编译时间和类加载时间的优化/ 122

5.3.4调整内存设置控制垃圾收集频率/ 126

5.3.5选择收集器降低延迟/ 130

5.4本章小结/ 133

第三部分虚拟机执行子系统

第6章类文件结构/ 136

6.1概述/ 136

6.2无关性的基石/ 136

6.3 Class类文件的结构/ 138

6.3.1魔数与Class文件的版本/ 139

6.3.2常量池/ 141

6.3.3访问标志/ 147

6.3.4类索引、父类索引与接口索引集合/ 148

6.3.5字段表集合/ 149

6.3.6方法表集合/ 153

6.3.7属性表集合/ 155

6.4 Class文件结构的发展/ 168

6.5本章小结/ 170

第7章虚拟机类加载机制/ 171

7.1概述/ 171

7.2类加载的时机/ 172

7.3类加载的过程/ 176

7.3.1加载/ 176

7.3.2验证/ 178

7.3.3准备/ 181

7.3.4解析/ 182

7.3.5初始化/ 186

7.4类加载器/ 189

7.4.1类与类加载器/ 189

7.4.2双亲委派模型/ 191

7.4.3破坏双亲委派模型/ 194

7.5本章小结/ 197

第8章虚拟机字节码执行引擎/ 198

8.1概述/ 198

8.2运行时栈帧结构/ 199

8.2.1局部变量表/ 199

8.2.2操作数栈/ 204

8.2.3动态连接/ 206

8.2.4方法返回地址/ 206

8.2.5附加信息/ 207

8.3方法调用/ 207

8.3.1解析/ 207

8.3.2分派/ 209

8.4基于栈的字节码解释执行引擎/ 221

8.4.1解释执行/ 221

8.4.2基于栈的指令集与基于寄存器的指令集/ 223

8.4.3基于栈的解释器执行过程/ 224

8.5本章小结/ 230

第9章类加载及执行子系统的案例与实战/ 231

9.1概述/ 231

9.2案例分析/ 231

9.2.1 Tomcat:正统的类加载器架构/ 232

9.2.2 OSGi:灵活的类加载器架构/ 235

9.2.3字节码生成技术与动态代理的实现/ 238

9.2.4 Retrotranslator:跨越JDK版本/ 242

9.3实战:自己动手实现远程执行功能/ 246

9.3.1目标/ 246

9.3.2思路/ 247

9.3.3实现/ 248

9.3.4验证/ 255

9.4本章小结/ 256

第四部分程序编译与代码优化

第10章早期(编译期)优化/ 258

10.1概述/ 258

10.2 Javac编译器/ 259

10.2.1 Javac的源码与调试/ 259

10.2.2解析与填充符号表/ 262

10.2.3注解处理器/ 264

10.2.4语义分析与字节码生成/ 264

10.3 Java语法糖的味道/ 268

10.3.1泛型与类型擦除/ 268

10.3.2自动装箱、拆箱与遍历循环/ 273

10.3.3条件编译/ 275

10.4实战:插入式注解处理器/ 276

10.4.1实战目标/ 276

10.4.2代码实现/ 277

10.4.3运行与测试/ 284

10.4.4其他应用案例/ 286

10.5本章小结/ 286

第11章晚期(运行期)优化/ 287

11.1概述/ 287

11.2 HotSpot虚拟机内的即时编译器/ 288

11.2.1解释器与编译器/ 288

11.2.2编译对象与触发条件/ 291

11.2.3编译过程/ 294

11.2.4查看与分析即时编译结果/ 297

11.3编译优化技术/ 301

11.3.1优化技术概览/ 301

11.3.2公共子表达式消除/ 305

11.3.3数组边界检查消除/ 307

11.3.4方法内联/ 307

11.3.5逃逸分析/ 309

11.4 Java与C/C++的编译器对比/ 311

11.5本章小结/ 313

第五部分高效并发

第12章 Java内存模型与线程/ 316

12.1概述/ 316

12.2硬件的效率与一致性/ 317

12.3 Java内存模型/ 318

12.3.1主内存与工作内存/ 319

12.3.2内存间交互操作/ 320

12.3.3对于volatile型变量的特殊规则/ 322

12.3.4对于long和double型变量的特殊规则/ 327

12.3.5原子性、可见性与有序性/ 328

12.3.6先行发生原则/ 330

12.4 Java与线程/ 333

12.4.1线程的实现/ 333

12.4.2 Java线程调度/ 337

12.4.3状态转换/ 339

12.5本章小结/ 341

第13章线程安全与锁优化/ 342

13.1概述/ 342

13.2线程安全/ 343

13.2.1 Java语言中的线程安全/ 343

13.2.2线程安全的实现方法/ 348

13.3锁优化/ 356

13.3.1自旋锁与自适应自旋/ 356

13.3.2锁消除/ 357

13.3.3锁粗化/ 358

13.3.4轻量级锁/ 358

13.3.5偏向锁/ 361

13.4本章小结/ 362

附录A Java虚拟机家族/ 363

附录B虚拟机字节码指令表/ 366

附录C HotSpot虚拟机主要参数表/ 372

附录D对象查询语言(OQL)简介/ 376

附录E JDK历史版本轨迹/ 383

为什么要学习java虚拟机的使用

随着互联网编程开发行业的不断发展,越来越多的编程开发语言被程序员所掌握。今天,昌平java培训就一起来了解一下,在学习java编程开发语言的时候,java虚拟机的存在有什么作用。

程序员之间的语言之争又未尝不是如此。写系统语言的鄙视托管语言那低下的执行效率;写托管语言的则取笑系统语言需要手动管理内存;写动态语言的不屑于静态语言那冗余的类型系统;写静态语言的则嘲讽动态语言里边各种光怪陆离的运行时错误。

Java作为应用广的语言,自然吸引了不少的攻击,而身为Java程序员的你,或许在口水战中落了下风,忿忿于没有足够的知识武装自己;又或许想要深入学习Java语言,却又无从下手。甚至是在实践中被Java的启动性能、内存耗费所震惊,因此对Java语言本身产生了种种的怀疑与顾虑。

不过别担心,学习Java虚拟机,就可以解答你对Java的种种疑虑,做到“知其所以然”——了解Java程序是如何被执行且优化的。这样一来,你才可以从内部入手,达到高效编程的目的。与此同时,你也可以为学习更深层级、更为核心的Java技术打好基础。

如果我们把核心类库的API比做数学公式的话,那么Java虚拟机的知识就好比公式的推导过程。掌握数学公式固然可以应付考试,但是了解背后的推导过程更加有助于记忆和理解。并且,在遇到那些没法套公式的情况下,我们也能知道如何解决。

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

单片机指令大全,单片机编程软件计算机编程语言大全?高级编程语言有哪些