深入理解java虚拟机pdf,java编程思想pdf下载
大家好,感谢邀请,今天来为大家分享一下深入理解java虚拟机pdf的问题,以及和java编程思想pdf下载的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
深入理解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
第1章走近Java/ 2
1.1概述/ 2
1.2 Java技术体系/ 3
1.3 Java发展史/ 5
1.4展望Java技术的未来/ 9
1.4.1模块化/ 9
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的语法、面向对象和主要的API核心库等知识,那将对学习起到相当的促进作用。我个人认为,一些经典的国外教材确实值得推崇,首先推荐要看的是《21天学通Ja va 2》、《循序渐进Java 2教程》、《Java2从入门到精通》等书看起来比较浅显易懂,将Java的基本只是都涉及到了,使你在很短的时间内掌握Java的基本内容。看完这这本书之一以后,你就想对Java全面深入的学习,现在向你推荐《Java大学教程》、《Java 2编程指南》等书,这几本书对Java的语法、面向对象的知识和AP I函数库等介绍的比较详尽。让你能够比较熟练的使用Java来编程,解决一般的问题。最后向大家推荐的是《Java2核心技术》,这本书主要讲述了Java的核心技术也是J ava的难点之处,具有很高的参考价值,无论是Java的初学者还是Java编程老手,都能从此书受益。这时候大家可能会注意到,其中竟然没有大名鼎鼎的《Thinking in Java》这本书。其实,这本书主要是从编程思想上来讲的,并没有完整的讲述Java的整个体系,而是一种类似Tips的方法来对Java的知识点进行深入的分析和解释,就好像C++的经典教材《C++ Primier》一样,并不适合作为初学语言的入门教材,蛋是在深入学习 Java的过程中的同时来读这本书会觉得受益匪浅。值得一提的是,其实最有实用价值的是JDK-Document(下文中简称doc, va.sun.com/j2se/1.5.0/download.jsp中有离线版下载的,本例中只是列举了1.5的 doc,在相应的地方可以下载1.4甚至1.3的doc)和Java Tutorial在线教程( 这个是在线查看的,离线版的下载本人目前还不知道)。在doc中有四个部分API文档(对SDK自带的标准Java API都进行了详细的介绍,它是按照package来组织的,详细介绍了每一个class的继承关系,接口的实现情况,以及所有public的属性和方法,对于每个方法的用途、调用的参数、参数的类型,返回值的类型、以及方法可能抛出的异常等等)、guide(对一些Jav a技术和概念进行讲述)、relnotes(这个介绍新版本的JDK的发布信息以及新特点)、tooldocs(主要对Java的所有命令进行讲述)。Doc是我们每一个Java工作者在编程时必须的手册,目前只有英文版,sun中国社区正在进行汉化,相信不久就会出现中文版的doc了。Tutorial也相当的不错,主要针对初学者,不过对于其他阶段的 Java学习者也有很大的帮助了。以上主要针对J2SE的学习进行讲述的,Java主要有J2SE、J2EE、J2ME三个部分,J2 SE是基础。当我们对J2SE的学习掌握的差不多的时候,其实我们就会对Java的学习有自己独特的体会,就会发现每一个Java技术自己所带的doc都对我们的学习有很大的帮助。此外,经常去一些著名的网站上去看看各位网友的作品,对Java学习的心得,确实对我们有很大提高,这里推荐 。经常去图书馆或者到书店去看看有关Java的书,看看它们是不是自己所需要的,这时候,选择学习Ja va的书籍就会自己拿主意了。在上述的一些书籍的介绍中,并非每本书都要看,可根据自己的实际情况进行选择,或者像Java先行者咨询即可。
好了,文章到这里就结束啦,如果本次分享的深入理解java虚拟机pdf和java编程思想pdf下载问题对您有所帮助,还望关注下本站哦!