深入理解Java虚拟机:JVM高级特性与最佳实践

简介: 目 录 [ - ] 《深入理解Java虚拟机:JVM高级特性与最佳实践》前言《深入理解Java虚拟机:JVM高级特性与最佳实践》内容特色《深入理解Java虚拟机:JVM高级特性与最佳实践》目录第1章 走近Java1.1 概述1.2 Java技术体系1.3 Java发展史1.4 展望Java技术的未来1.4.1 模块化1.4.2 混合语言1.4.3 多核并行1

目 录 [ - ]

  1. 《深入理解Java虚拟机:JVM高级特性与最佳实践》前言
  2. 《深入理解Java虚拟机:JVM高级特性与最佳实践》内容特色
  3. 《深入理解Java虚拟机:JVM高级特性与最佳实践》目录
  4. 第1章 走近Java
  5. 1.1 概述
  6. 1.2 Java技术体系
  7. 1.3 Java发展史
  8. 1.4 展望Java技术的未来
  9. 1.4.1 模块化
  10. 1.4.2 混合语言
  11. 1.4.3 多核并行
  12. 1.4.4 进一步丰富语法
  13. 1.4.5 64位虚拟机
  14. 1.5 实战:自己编译JDK
  15. 1.5.1 获取JDK源码
  16. 1.5.2 系统需求
  17. 1.5.3 构建编译环境
  18. 1.5.4 准备依赖项
  19. 1.5.5 进行编译
  20. 1.6 本章小结
  21. 第2章 Java内存区域与内存溢出异常
  22. 2.1 概述
  23. 2.2 运行时数据区域
  24. 2.2.1 程序计数器
  25. 2.2.2 Java虚拟机栈
  26. 2.2.3 本地方法栈
  27. 2.2.4 Java堆
  28. 2.2.5 方法区
  29. 2.2.6 运行时常量池
  30. 2.2.7 直接内存
  31. 2.3 对象访问
  32. 2.4 实战:OutOfMemoryError异常
  33. 2.4.1 Java堆溢出
  34. 2.4.2 虚拟机栈和本地方法栈溢出
  35. 2.4.3 运行时常量池溢出
  36. 2.4.4 方法区溢出
  37. 2.4.5 本机直接内存溢出
  38. 2.5 本章小结
  39. 第3章 垃圾收集器与内存分配策略
  40. 3.1 概述
  41. 3.2 对象已死?
  42. 3.2.1 引用计数算法
  43. 3.2.2 根搜索算法
  44. 3.2.3 再谈引用
  45. 3.2.4 生存还是死亡?
  46. 3.2.5 回收方法区
  47. 3.3 垃圾收集算法
  48. 3.3.1 标记 -清除算法
  49. 3.3.2 复制算法
  50. 3.3.3 标记-整理算法
  51. 3.3.4 分代收集算法
  52. 3.4 垃圾收集器
  53. 3.4.1 Serial收集器
  54. 3.4.2 ParNew收集器
  55. 3.4.3 Parallel Scavenge收集器
  56. 3.4.4 Serial Old收集器
  57. 3.4.5 Parallel Old收集器
  58. 3.4.6 CMS收集器
  59. 3.4.7 G1收集器
  60. 3.4.8 垃圾收集器参数总结
  61. 3.5 内存分配与回收策略
  62. 3.5.1 对象优先在Eden分配
  63. 3.5.2 大对象直接进入老年代
  64. 3.5.3 长期存活的对象将进入老年代
  65. 3.5.4 动态对象年龄判定
  66. 3.5.5 空间分配担保
  67. 3.6 本章小结

 


作者: 周志明     

出版社: 机械工业出版社

ISBN: 9787111349662

出版日期: 2011 年7月

豆瓣网讨论地址:http://book.douban.com/subject/6522893

China-pub地址:http://product.china-pub.com/194035

内容简介

       作为一位Java程序员,你是否也曾经想深入理解Java虚拟机,但是却被它的复杂和深奥拒之门外?没关系,本书极尽化繁为简之妙,能带领你在轻松中领略Java虚拟机的奥秘。本书是近年来国内出版的唯一一本与Java虚拟机相关的专著,也是唯一一本同时从核心理论和实际运用这两个角度去探讨Java虚拟机的著作,不仅理论分析得透彻,而且书中包含的典型案例和最佳实践也极具现实指导意义。
       全书共分为五大部分。第一部分从宏观的角度介绍了整个Java技术体系的过去、现在和未来,以及如何独立地编译一个OpenJDK7,这对理解后面的内容很有帮助。第二部分讲解了JVM的自动内存管理,包括虚拟机内存区域的划分原理以及各种内存溢出异常产生的原因;常见的垃圾收集算法以及垃圾收集器的特点和工作原理;常见的虚拟机的监控与调试工具的原理和使用方法。第三部分分析了虚拟机的执行子系统,包括Class的文件结构以及如何存储和访问Class中的数据;虚拟机的类创建机制以及类加载器的工作原理和它对虚拟机的意义;虚拟机字节码的执行引擎以及它在实行代码时涉及的内存结构。第四部分讲解了程序的编译与代码的优化,阐述了泛型、自动装箱拆箱、条件编译等语法糖的原理;讲解了虚拟机的热点探测方法、HotSpot的即时编译器、编译触发条件,以及如何从虚拟机外部观察和分析JIT编译的数据和结果。第五部分探讨了Java实现高效并发的原理,包括JVM内存模型的结构和操作;原子性、可见性和有序性在Java内存模型中的体现;先行发生原则的规则和使用;线程在Java语言中的实现原理;虚拟机实现高效并发所做的一系列锁优化措施。
       本书适合所有Java程序员、系统调优师和系统架构师阅读。

作者简介

       周志明,资深Java技术专家,对JavaEE企业级应用开发、OSGi、Java虚拟机和工作流等都有深入的研究,并在大量的实践中积累了丰富的经验。尤其精通Java虚拟机,撰写了大量与JVM相关的经典文章,被各大技术社区争相转载,是ITeye等技术社区公认的Java虚拟机方面的领袖人物之一。现任远光软件股份有限公司平台开发部经理兼平台架构师,先后参加与过国家电网、南方电网等多个国家级大型ERP项目的平台架构工作,对软件系统架构也有深刻的认识和体会。

专家推荐

       Java 程序是如何运行的?Java虚拟机在其中扮演了怎样的角色?如何让Java程序具有更高的并发性?许多Java程序员都会诸如此类的疑问。无奈,国内在很长一段时间里都没有一本从实际应用的角度讲解Java虚拟机的著作,本书的出版可谓填补了这个空白。它从Java程序员的角度出发,系统地将Java程序运行过程中涉及的各种知识整合到了一起,并配以日常工作中可能会碰到的疑难案例,引领读者轻松踏上探索Java虚拟机的旅途,是广大对Java虚拟机感兴趣的读者的福音!——莫枢(RednaxelaFX) 虚拟机和编程语言爱好者

       在武侠的世界里,无论是至刚至强的《易筋经》,还是阴柔无比的《葵花宝典》,都离不开内功修炼。没有了内功心法,这些武术只是花拳绣腿的拙劣表演而已。软件业是武林江湖的一个翻版,也有着大量的模式、套路、规范等外功,但“外功修行,内功修神”,要想成为“扫地僧”一样的绝世高人,此书是必备的。——秦小波 资深Java技术专家/著有畅销书《设计模式之禅》

       对Java程序员来说,Java虚拟机可以说是既熟悉又神秘,很少Java程序员能够抑制自己探究它的冲动。可惜,分析JVM实现原理的书籍(特别是国内作者出版的)是少之又少。本书的出版可谓Java程序员的福音,作者将自己多年来在Java虚拟机领域的实践经验和研究心得呈现在了这本书中,不仅系统地讲解了Java虚拟机工作机制和底层原理,而且更难能可贵的是与实践很好地结合了起来,具有非常强的实践指导意义,强烈推荐!——计文柯 资深Java技术专家/著有畅销书《spring技术内幕:深入解析Spring架构设计与实现原理》

相关文章
|
14天前
|
Oracle Java 关系型数据库
java体系结构和jvm
java体系结构和jvm
|
27天前
|
Java
Java中的多线程编程技巧与最佳实践
在当今软件开发领域,多线程编程已经成为不可或缺的一部分。本文将深入探讨Java中的多线程编程技巧与最佳实践,帮助开发人员更好地利用多线程提高程序性能和并发处理能力。
|
1月前
|
存储 安全 Java
深入理解 Java 多线程、Lambda 表达式及线程安全最佳实践
线程使程序能够通过同时执行多个任务而更有效地运行。 线程可用于在不中断主程序的情况下在后台执行复杂的任务。 创建线程 有两种创建线程的方式。 扩展Thread类 可以通过扩展Thread类并覆盖其run()方法来创建线程:
107 1
深入理解 Java 多线程、Lambda 表达式及线程安全最佳实践
|
1月前
|
Java 程序员
Java 异常处理与正则表达式详解,实例演练及最佳实践
在 Java 代码执行期间,可能会发生各种错误,包括程序员编码错误、用户输入错误以及其他不可预料的状况。 当错误发生时,Java 通常会停止并生成错误消息,这个过程称为抛出异常。 try...catch 语句 try 语句允许您定义一段代码块,并在其中测试是否发生错误。 catch 语句允许您定义一段代码块,当 try 块中发生错误时执行该代码块。 try 和 catch 关键字成对使用,语法如下:
42 0
|
1月前
|
存储 Java 数据安全/隐私保护
【JVM】Java虚拟机栈(Java Virtual Machine Stacks)
【JVM】Java虚拟机栈(Java Virtual Machine Stacks)
35 0
|
1月前
|
Java 程序员 索引
Java中的异常处理:理解、实践与最佳实践
【2月更文挑战第26天】在Java编程中,异常处理是一个重要的概念。它不仅帮助我们在程序出错时提供有关错误的详细信息,而且还允许我们以一种结构化的方式来处理这些错误。本文将深入探讨Java中的异常处理,包括如何创建自定义异常,如何使用try-catch-finally语句块,以及如何在实际编程中应用最佳实践。
27 3
|
25天前
|
缓存 Java C#
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍(一)
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍
67 0
|
5天前
|
缓存 监控 Java
深入理解Java虚拟机(JVM)性能调优
【4月更文挑战第18天】本文探讨了Java虚拟机(JVM)的性能调优,包括使用`jstat`、`jmap`等工具监控CPU、内存和GC活动,选择适合的垃圾回收器(如Serial、Parallel、CMS、G1),调整堆大小和新生代/老年代比例,以及代码优化和JIT编译策略。通过这些方法,开发者能有效提升应用性能并应对复杂性挑战。性能调优是持续过程,需伴随应用演进和环境变化进行监控与优化。
|
28天前
|
Java 程序员 API
Java中的异常处理:理解、实践与最佳实践
在Java编程中,异常处理是一个重要的概念。本文将深入探讨Java中的异常处理,包括其基本概念、如何在实践中应用,以及一些最佳实践。我们将通过实例和代码片段来解析这些概念,以帮助读者更好地理解和应用Java的异常处理。
10 0
|
1月前
|
Java 开发者
Java中的异常处理:理解、实践与最佳实践
【2月更文挑战第28天】 在编程的海洋中,异常处理是一艘救生艇,确保了程序在遭遇错误时不会沉没。本文将深入探讨Java的异常处理机制,从基本概念到高级应用,再到最佳实践,为开发者提供一份全面的指南。我们将一起学习如何优雅地处理异常,提升代码的稳定性和可维护性。