登录 注册
当前位置:主页 > 资源下载 > 20 > 全面掌握 Java 虚拟机 JVM 的高级特性及最佳实践

全面掌握 Java 虚拟机 JVM 的高级特性及最佳实践

  • 更新:2024-06-29 16:29:02
  • 大小:1.58MB
  • 推荐:★★★★★
  • 来源:网友上传分享
  • 类别:Java - 后端
  • 格式:PDF

资源介绍

前 言   致 谢   第一部分 走近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