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

周志明

出版时间

2013-05-01

ISBN

9787111421900

评分

★★★★★
书籍介绍
这是一本让读者与JVM「真正认识彼此」的书。多数Java开发者日常写代码,却未必清楚内存如何在运行时被划分、垃圾究竟如何被判定为「已死」、一次Full GC为何会让程序骤然停顿。本书的价值,正在于把那些停留在符号与名词层面的知识,还原为可被理解、可被追踪的运行机理。读者反馈中反复出现的,是「近距离接触」后的豁然开朗——OutOfMemoryError不再只是报错信息,调优也不再凭感觉。当然,它门槛不低,概念密集、术语有时不加解释,追求HotSpot源码级深入者或许会觉得「还不够」。但正是这份对底层原理的执着,使其成为进阶路上绕不开的一本:适合那些不满足于「会用」,而想搞清楚「为何如此」的开发者。
作者简介
周志明,资深Java技术专家,对JavaEE企业级应用开发、OSGi、Java虚拟机和工作流等都有深入的研究,并在大量的实践中积累了丰富的经验。尤其精通Java虚拟机,撰写了大量与JVM相关的经典文章,被各大技术社区争相转载,是ITeye等技术社区公认的Java虚拟机方面的领袖人物之一。除本书外,还著有经典著作《深入理解OSGi:Equinox原理、应用与最佳实践》,广获读者好评。现任远光软件股份有限公司开发部总经理兼架构师,先后参与过国家电网、南方电网等多个国家级大型ERP项目的平台架构工作,对软件系统架构也有深刻的认识和体会。
AI导读
核心看点
  • 系统解析JVM内存管理与垃圾回收机制
  • 深入剖析类加载机制与字节码执行引擎
  • 提供大量生产环境调优实战与最佳实践
读者共识
  • Java领域公认的经典著作,口碑极佳
  • 内容深入浅出,实战性强,干货满满
  • 部分概念解释略显晦涩,适合进阶
精彩摘录
  • "GC日志开头的“[GC”和“[Full GC”说明了这次垃圾收集的停顿类型,而不是 用来区分新生代GC还是老年代GC的。如果有“Full”,说明这次GC是发生了Stop-The-World 的"
  • "由于使用了准确式内存管理,Exact VM可以抛弃掉以前Classic VM基于handler的对象查找方式(原因是GC后对象将可能会被移动位置,如果地址为123456的对象移动到654321,在没有明确信息表明内存中哪些数据是reference的前提下,那虚拟机是不敢把内存中所有为123456的值改成654321的,所以要使用句柄来保持reference值的稳定),这样每次定位对象都少了一次间接查找的开销,提升执行性能。"
  • "至此,官方提供的JDK可以运行于Windows(不含Windows 9x)、Linux、Solaris和Mac OS平台上,支持ARM、x86、x64和Sparc指令集架构类型。"
  • "虽然Exact VM的技术相对Classic VM来说先进了许多,但是在商业应用上只存在了很短暂的时间就被更为优秀的HotSpot VM所取代,甚至还没有来得及发布Windows和Linux平台下的商用版本。"
  • "存储局部变量表、操作栈、动态链接、方法出口等信息。"
  • "老年代GC(Major GC/Full GC):指发生在老年代的GC,出现了Major GC,经常会伴随至少一次的Minor GC(但非绝对的,在Parallel Scavenge收集器的收集策略里就有直接进行Major GC的策略选择过程)。Major GC的速度一般会比Minor GC慢10倍以上。"
  • "如果向CHA查询出来的结果是有多个版本的目标方法可供选择,则编译器"
  • "虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。"
目录
前言
第2版与第1版的区别
本书面向的读者
如何阅读本书
勘误和支持

显示全部
用户评论
#多看阅读#
宏观了一点,除了"深入"其它各方面都不错
Java发展挺快的
解答了很多问题
这个应该给满分,浅显易懂,对jvm的内部能说的这么明白,非常不容易了
通俗流畅
需要反复读
痛学JVM QAQ ,下次不要再被问住啦
今天重新翻了大概三分之一的内容吧,发现好多东西要去找最新的jdk,于是查了一下,发现果然有第三版了。毫不犹疑下单了。还要,别忘记把这本我翻来覆去读了好多次的人生第一本“神书”的5星好评补上。
可以作为工具书参考
下载
收藏