《深入理解Java虚拟机(第3版)》的读后感10篇

  《深入理解Java虚拟机(第3版)》是一本由周志明著作,机械工业出版社出版的平装图书,本书定价:129.00元,页数:2019-12,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助。

  《深入理解Java虚拟机(第3版)》读后感(一):Java虚拟机,有这本就够了

  之前看过第二版,对于想了解jvm的小伙伴建议入手这本书。 类加载、内存分析、垃圾收集机制等部分都是进入jvm大门的必备知识,如果想更深入了解,还有字节码层面的介绍,还结合了一些案例进行讲解。 而第三版是在jdk12的基础上进行介绍的,想了解当前jvm的最新进展的小伙伴,本书更是不容错过。基于作者之前的经验,本次改版更适合大家阅读,有利于循序渐进的掌握jvm的重要方面。

  《深入理解Java虚拟机(第3版)》读后感(二):国内原创技术书的优质之作

  国内原创技术书的优质之作,读起来过瘾,流畅。收货很大。 对于一些比较晦涩难懂的部分也讲的比较明白。 但还是有个别的点只是提到了,但是没有解释清楚,只能找别的书再补充了。 国内的技术作者要都是这样认真出作品就好了。

  没想到这本书会有如此之好,内容深入而有意义! 起码我在读它的时候会让我忍不住的往下读,一点也不枯燥,精辟入理。很想知道更深入的会是什么。理论与实践结合得很好,读完了,很想去实践实践!既然是深入理解,也深入实践吧。

  《深入理解Java虚拟机(第3版)》读后感(三):深入理解Java虚拟机:JVM高级特性与最佳实践 读后感

  写这篇读后感的缘由是这本书的第三版即将面世了,先拜谢周教授,相信很多人得益于周教授的这本书。 14年入手的第二版,当时准备跳槽,需要理论知识武装一下。于是囫囵吞枣的扫了第一遍,就两个字,不懂,那种感觉就仿佛身在雾中,一切都看不通透,感觉浑身不舒服,想来是自己水平太渣了。 那个时间点是在工作2年,加上大学4年,接触java将近6年的时间,在项目组内基本上属于横着走,跟同学出牛,“只要能说明白需求,我就能做出来”。结果,一本关于Java虚拟机的书,居然还看不懂,真是备受打击啊。 现在想来,听过我出牛的同学心中一定是各种鄙视,所谓“无知者无畏”,所以才敢吹牛。这就是认知边界在作怪了,知道的越少,以为世界就越简单,也就越以为自己无所不能了。 我属于学渣,通常碰到这种看不懂的书,一般就扔边上吃灰了。碰巧是当时刚搬家,新住处网络奇差,ping值一般1000以上,玩LOL时刚冲锋就掉线送人头,风骚走位玩不了,也就弃玩了。闲来无事,就打算再翻翻这本让自己没面子的书。 第二次读的时候就挑着看,想的是,反正看不懂,看多少算多少,能看明白就是赚了(真是感谢当时自己的佛系心态)。 这本书分了几个部分,各部分可以独立学习,就挑了第二部分,这部分主要分为:JVM的自动内存管理、常见的垃圾收集算法以及垃圾收集器的特点和工作原理、常见虚拟机监控与故障处理工具的原理和使用方法。这部分比较偏上层应用,更像是数据结构和算法,抛开了JVM协议,更适合当时的自己(自己当时也就能看明白这一部分,手动捂脸哭)。 静下心来慢慢学的时候才发现,书中的知识还是比较容易理解的,而且能够和工作中的经历联系起来。比如讲“虚拟机内存区域的划分原理”和“各种内存溢出异常产生的原因”这两块的时候,就想到工作中各种oom的经历。前面说了,当时在组里横着走(外包公司,大家懂的),碰到问题就得往前冲,所以也经常会碰到这种解决不了的问题。看到这本书,一下粘贴来的解决方法也就明白了。 第二遍的感觉,就仿佛是雾散云消,一切通透了。 Java目前是编程语言使用人数排名第一的,而且是连续多年第一,真真的霸首。而 JVM 又是 Java 赖以运行的根本,所以能够了解JVM的原理,对于Java学习还是很有帮助的。从14年书中将的JDK 7,到现在JDK 13即将发布稳定版,JDK 8的Lambda、JDK 9的模块化、JDK 10的var变量、JDK 11的ZGC,Java的世界进入了高速发展阶段。借着这本书第三版的面世,再读一遍基于JDK 12的JVM虚拟机原理,也算是跟上时代的脚步,别固步自封,犯刚毕业时犯下的错误。 立个flag,等学习完第三版之后再来拔旗。

  《深入理解Java虚拟机(第3版)》读后感(四):我小蓝本的不解之缘

  大学专业就是计算机,后面大二开始就开始自己学习java的基本语法,自己写一些例子作为学习。后来参加工作也是以java开发为主,一直也没有深入的了解java是如何运行,也不太了解java的内存管理机制。大学课程学了C++,需要手动申请和释放内存,有时忘记了就会导致内存泄露和溢出。学了java之后才发现原来java不用手动去做这些动作就可以自动管理内存,很好奇java是如何实现的。由于自己的英文不是太好所以也没办法去阅读英文文档,工作两年之后通过朋友的推荐知道了周老师的深入理解Java虚拟机立刻入手了一本,当时就感觉如获珍宝。第一次阅读大概花了一个星期囫囵吞枣的读了一遍,当时印象比较深的是关于GC收集器、JIT编译器、虚拟机并发机制、双亲委派等,感觉进入了一个不一样的世界,但是第一遍读完自己留下的印象很多还是JVM中的一堆名词,很多还不是很理解,才发现作者的功底很深。过了一段时间之后,开始了我的第二遍读写(跳过了第六章,太难懂了),每一章节的目的算是弄清了,前后的顺序相互连接也基本弄清,书上的demo也基本上跟着操作了一遍,但是让我自己去说一遍还是不知道从何开口,很多问题还是有些卡壳。说真的,这遍读完我有点怀疑自己的水平,更怀疑了自己的知识水平,有点怕摸这本书了,有点想放弃的感觉。所以这本书也就被我束之高阁了一段时间,这段时间业务也比较的忙加班比较多,整天忙着CRUD,后面感觉提升很疲惫。偶然的机会加入了一个微信群,知道了R大这位大神,也看了他很多知乎上的文档,感觉很专业,并且R大也在推荐周老师的这本深入理解java虚拟机,自己也开始独立负责项目,并且部署项目,在项目运行过程中也出现过OOM的情况,遂开始了第三遍的阅读。这次又从头开始阅读,终于不再是读作者文字而是能跟上他的思路自己想下一句再跟他的对照了。之前没注意的细节也清晰起来,也理解了为什么gc是jvm的重头戏。gc里几乎每个环节都跟实现相呼应。

  工作这么多年一直把这本书放在手边,不时的翻翻已记不起是多少次翻阅。书页很多都已经翻的有些破烂了,书上被自己记录了很多笔记。但是这本深入理解Java虚拟机是第二版,是基于JDK1.7写的,而现在Java的版本已经到了13,所以自己很多知识已经落后了许多,比如说Java8中去除了永久代而新增了元空间,那么元空间是如何管理的?是JAVA虚拟机管理还是操作系统管理?还有就是ZGC、Var等新的特性,JVM是如何实现的。种种疑问在自己脑中盘旋,自己也尝试去找些博客去看,不过博客上讲的很乱,而且也没办法分辨正确与否,11月的时候听杨福川老师在狼哥的群里说周老师的拿本深入理解Java虚拟机要出第三版了,新增了很多的内容,特别的期待

  《深入理解Java虚拟机(第3版)》读后感(五):深入理解Java虚拟机 - 书评

  我觉得《深入理解Java虚拟机》应该是目前市面上Java程序员人手一本的圣经了。记得我在上大学的时候,同系的学长极力给我推荐这本书,说是把这本书看烂了,保准能拿一个大Offer,于是我就跟这本书认识了。最开始差不多花了一周的时间把这本书过了一遍,大概看完了,其实因为当初的基础过于薄弱,只是记住了一些名词,比如栈,堆,常量池,GC什么的,当时看完觉得一头雾水,然后就放在一边了。等到我毕业了,开始工作了,在工作中碰到了很多问题,比如程序为什么GC了?程序为什么OutOfMemory了?我就突然想起来我好像之前有看过一本讲这些的书,于是我又把这本书拿起来重新读了一边,这次与上次不同在于上次我只是读这本书,而这次我是带着工作中的问题来阅读这本书,本来以为JVM底层是遥不可及的远方,但是在这本书中周老师层层递进剖析JVM底层,我也是从这开始对JVM内存分布有了一定的了解和认识,也是从这才知道了JVM内存被划分了这么多块,每一块的作用是什么?程序GC,OOM是发生在哪一部分的?内存底层理解了,那对于程序计数器,栈,堆,直接内存等等之间的联系就有了整体的认识,后面我对于每一部分的内部作用的学习就是建立在一个对整体有宏观了解的基础之上,在后面的学习过程中就会显得一切都是那么水到渠成。 这本书的第三章也是我阅读次数最多的章节,这个章节介绍了JVM的垃圾收集器和内存分配策略,这部分我觉得重要性在于两点:1. 工作中GC的问题是躲不过的问题,只有了解了GC的根因也才能进行合理的优化 2. 面试中这是必考点,哈哈哈哈。这章周老师讲解了不同的垃圾回收算法以及其适用场景,对于目前主流的垃圾回收器也进行了介绍,我在工作之中也是基于这章的内容进行了垃圾回收器的选择。 但是要说对我帮助最大的内容,必须是字节码部分,类加载机制和JavaAgent部分,我之前有很长一段时间工作的重点是基于JavaAgent进行分布式链路跟踪服务的建立和维护,最开始对这些也都不甚了解,网上成体系的书籍也不是很多,但是这本书中就对这几部分进行了深入的介绍,其中我也是阅读了类加载机制,才明白JavaAgent流程的开始点,以及不同版本之间class冲突的原因,这些东西帮我避免了很多个线上事故 ̄□ ̄||。当前这部分我再面试之中也是碰到了好几个面试官都问我了。 本书后几章中对于Java线程和线程安全与锁优化,这些内容也都是面试必考点啊,这些东西如果不懂,我觉得面试十有八九挂,我印象中我面试过的百度,滴滴,快手都问了这些问题,基本你如果把这本书背过(死记硬背容易忘,需要理解的背),这部分内容一定是对答如流,面试官也会对你高看一眼(反正我会,啊哈哈哈) 最后,周老师要出《深入理解Java虚拟机》,我必须要大力支持,毕竟这些东西是周老师花了数年的心血的结晶,我需要紧跟大佬的脚步,向大佬学习!努力!

  《深入理解Java虚拟机(第3版)》读后感(六):深入理解Java虚拟机:JVM高级特性与最佳实践 读后感

  最开始学编程是学的C语言,后来工作了就使用了Mac电脑,发现C语言没法移植,感觉很麻烦,代码都得重写一遍,毕业后开始做安卓开发,

  接触了java语言,我第一反应就是,会不会我以后换电脑,代码还需要重写一遍,这不很麻烦?在开 的时候发现了java会生成.class文件,开始没觉得怎么样,后来一天用windows开发的同事让我把demo借他看看,发现可以直接在window上运行,这才知道这都是java虚拟机的功劳,后来他推荐给我周志明的《深入理解Java虚拟机:JVM高级特性与最佳实践 》 一书,是第二版,买回来就爱不释手,隔段时间就翻看,随着工作年龄的增加,每次翻看,对立面的内容都有更加深刻的理解。

  write once run everywhere 这个功能太赞了!!可以跨平台了!随着不断地研读 才知道他是将 .java会生成.class 文件。然后jvm 会将.class 文件翻译成机器码(101010) 在不同的平台上,jvm会将相同的.class文件转换成不同的机器码。 在深入就理解Classloader,java将class文件的二进制文件加载到jvm中的内存中,放在了方法区里面,然后在堆中创建class对象。用来封装方法区中的数据结构。然后映射为jvm可以识别的数据结果(class对象),这个class对象就是用来访问方法区的入口。 然后就是双亲委派,打破双亲委派。 这段内容看似简单,但是因为当时水平有限,反复阅读了很多遍才能理解。现在还能记得第一次看这段内容的时候,真的是味同爵蜡。通过反复的看才真正理解周志明书中的意思,真的是书读百遍其义自见。

  感觉jvm真的很难,工作一两年的去啃英文的java虚拟机规范更是难上加难,幸亏有了周志明的《深入理解Java虚拟机》这本书,让我们可以最快速的去理解 java虚拟机的实现原理,代码是怎么跑起来的。

  后来就遇到了更多关于java虚拟机的问题,因为java虚拟机自己动的进行内存的管理、回收,所以马上就出现了oom等问题,根本就无从下手,这个时候就想到了《深入理解Java虚拟机》赶紧拿起来翻看,这才得知,内存泄漏,内存溢出等问题。知道了栈上分配,内存逃逸,MLAB等技术,也理解了gc的流程,新生代,来年代,minorgc,fullgc等等。感觉jvm虚拟机内存自动管理真是个双刃剑,也需要开发者了解其内部原理。

  同时也很感谢周志明写出了《深入理解Java虚拟机:JVM高级特性与最佳实践》 这本书,让国内java开发者能快速的了解java虚拟机的原理,解决了很多开发上的问题。

  java还在不断的进步,jvm也不断的迭代,作为java开发者不断的去研究jvm是非常有必要的,只要不断地了解底层的原理,才能在工作中解决棘手问题,在同事中脱颖而出。

  《深入理解Java虚拟机(第3版)》读后感(七):我与《深入理解Java虚拟机》小蓝的故事

  在我大三接触java的时候,深入理解JAVA虚拟机这本书已经出到第二版(小蓝)了,找实习工作时候,没有怎么问JVM,自己也对JVM不是很了解。实习期间,组里的一个老同事就告诉我学习JAVA虚拟机可以看这本书,还经常拿参数来考我。我当时觉得,看这个干什么,那么枯燥的概念,工作也用不到,有什么意义呢?

  直到工作两年后,遇到了很多内存溢出,内存泄漏的问题,老大交个我处理,而我连设置的参数都不是很明白,这个时候真的是白首方悔读书迟... 于是赶紧买了一本小蓝,从看的一脸懵逼到慢慢有些理解再到能够顺口讲解给别人听,小蓝陪了我好几个日日夜夜。

  小蓝是一本JVM领域介绍的很全面的书,从虚拟机规范到JAVA的实现基本上每块都有讲解,主要是围绕虚拟机内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理。

  从JAVA的内存管理这块,小蓝就开始带着我这个对JVM仰望的菜鸟入遨游了虚拟机的内存区域,明白了虚拟机内存区域的划分,以及为什么这么划分,还有内存溢出异常的原因。有哪些垃圾收集器,特点还有原理,最后还告诉我常见的监控方法,内存结构和垃圾收集器这些也是面试常遇见的问题。

  执行子系统这一块,在面试时候也是高频点,去哪里不得先问个类加载机制?想知道Class 文件结构么,没错!看它就对了。尤其是结合着手写JAVA虚拟机那本,对CLASS加载做了一个深入的实践。

  程序编译这一块,让我知道了语法糖的原理,还让我入了CSAPP的门。一入JVM深似海啊!

  最后的高并发这一块,让我知道了Java的内存模型,Happens-before的几大原则、线程在JAVA的实现原理,锁的优化等。让我从java小白升级为了java大白,知道了并发问题的源头。

  这本书给我的最大收获是告诉了我学习底层的好处是什么,那就是只有内功修炼好了,才能面对强敌应对自如。从JVM的内存管理到操作系统的内存管理,都是要深入去研究的东西。在换工作中,大部分相关的jvm问题在书中都能找到,帮我在寒冬中拿到了心仪的offer。

  自己也学习了很多其他的jvm书籍,然后发现小蓝是最贴近标题的一本,也是国内少有分析JVM实现原理的一本书,它不但辅助了我们了解了虚拟机规范还带着我们分析了实现的部分。

  前段时间听说小蓝要变(更新)了,心里其实很惊喜的,因为小蓝的版本确实落后了很多,还听别人说不更新了,赶紧去预购网站看了一下目录,发现多了很多新东西,尤其是看到目前火热的G1、ZGC字眼顿时开心的不得了。而且内容还增加了将近一半,对小蓝一些勘误点也修改了(之前有看到R大对书中错误点进行了指正),急着想通读一遍了。还顺带着推销了一波py。。。

  虽然小蓝变了,不管接下来是小紫还是小红,小蓝陪着我找bug、找工作我都记忆犹新。

  《深入理解Java虚拟机(第3版)》读后感(八):来自一名周志明老师的忠实信徒

  Java自上世纪90年代问世以来,以其优良的特性,逐渐占据了企业级开发的主流位置,并且日益强大的语言生态,更加巩固了它在编程语言排行榜上的地位。

  Java的快速发展,得益于支撑它运行的底层平台:JVM,这个由C++编写的虚拟机,有着一个抽象化的虚拟机体系结构,让我们的Java程序得以“一次编写,到处运行”,并且开发人员并不需要关心资源问题,JVM为我们独挑大梁。但是,正如周志明老师在《深入理解Java虚拟机》中所说:“Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的「高墙」,墙外面的人想进去,墙里面的人却想出来”,技术总是让你得到你想得到的,但你却不得不丢弃一些东西。是的,在Java的道路上,“入之愈深,其进愈难,而其见愈奇”,当你在手舞足蹈地庆祝Java带给你的便利的同时,你也可能苦恼于内存泄漏和溢出的问题,有道是人在JVM,身不由己。

  枕边的那本第一版《深入理解Java虚拟机》是我在大学时期买的,现在基本快翻烂了,记得刚毕业的时候,上下班两个小时地铁的通勤时间,总喜欢捧着它结合白天系统的问题寻找答案,那段时光,是我毕业之后最美好的回忆。依稀还记得技术生涯当中处理的第一个JVM问题,当时我的应用程序构建于JDK1.6,基于POI做了一个Excel报表导出的功能,第一次部署的时候使用的默认JVM参数,但是测试人员在点击了一次导出之后,其他功能就疑似挂掉了,过了一会后才能正常使用;再点击导出,又出现这个问题,查看堆栈发现错误信息:java.lang.OutOfmemoryError: PermGen Space,由于当时刚毕业,对于这种疑难问题没有经验,一时间慌了神,后面我猛然想起《深入理解Java虚拟机》中提到过类似的场景,在JDK1.6以及之前的版本中,常量池分配在永久代内,而导出Excel报表这个功能是会产生大量的字符串的,而字符串分配在字符串常量池,原来是一次导出产生的字符串撑爆了永久代!按照书里的提示,我只需要将永久代设置大一些,就不会出现这种现象。随即设置了XX:PermSize和XX:MaxPermSize的值,完美解决了这个问题。至今想起这个事件,仍然很庆幸当时买了《深入理解Java虚拟机》,从此以后,我就将它放在枕头下了。

  如今,毕业参加工作已有好几年了,也会时常翻阅《深入理解Java虚拟机》,争取对每个细节做到知根知底。从新生代到老年代,从YGC到FGC,从CMS到G1,无不是Java开发者老生常谈的话题。从2017年到2019年,两年时间Oracle发布了Java9到Java13,似乎感觉快跟不上技术发展的脚步了,好像Java8的Lambda还没学透,Java9的模块化就来了,Java10的var变量类型推断就来了,Java11的ZGC就来了…再一次地,我想起了跟随《深入理解Java虚拟机》的脚步,得知第三版已枕戈待旦,相比老版新增内容多到50%,JDK12和JDK13 EA等特性解读应有尽有,值得期待!

  《深入理解Java虚拟机(第3版)》读后感(九):期待第三版

  Java是目前最流行的语言之一,作为一个Java工程师更应该深入了解一下Java虚拟机,而支持Java程序运行的虚拟机资料并不多。当时在网上没有找到什么资源,直到我看到周志明老师的《深入理解Java虚拟机》,这简直是Java程序员的福音。第一次见到这本书是在同事的桌上,我顺手拿起来读了前两章,让我一直感觉非常神秘的虚拟机,终于被解开了面纱。之后便被深深地吸引,自己也入手一本,开始了学习之路。

  周志明 资深Java技术专家,对JavaEE企业级应用开发、OSGI、Java虚拟机和工作流等都有深入的研究,并在大量的实践中积累了丰富的经验。尤其精通Java虚拟机,撰写了大量与JVM相关的经典文章被各大技术社区争相转载,是ITeye等技术社区公认的Java虚拟机方面的领袖人物之一。

  《深入理解Java虚拟机》全书共分为5大部分,走进Java、自动内存管理机制、虚拟机执行子系统、程序编译与代码优化、高效开发。本书适合中高级工程师阅读,毕竟需要有一点的编程基础,才能够理解虚拟机。书中作者已简单、明了的语言介绍了Java技术体系的过去与未来、垃圾回收算法、垃圾收集器、虚拟机工作原理、程序的编译与代码优化、JVM内存模型等等。非常推荐大家阅读,不知道大家有没有因为虚拟机被拒之门外的时候。作为一个Java工程师,深入理解Java虚拟机是每个人成长的必经之路,如果不能掌握编译运行的原理,就无法写出最优的代码。

本书的第三版马上就要出了,作为忠实的读者,非常的期待,这里也放入个第三版的购买链接,想要学习的朋友可以通过以下链接购买:

  购买链接:https://item.jd.com/12607299.html?dist=jd

  《深入理解Java虚拟机(第3版)》读后感(十):最好的JVM学习书籍

  众所周知,JAVA是跨平台的编程语言, “Compile Once,Run Everywhere”,JAVA能够一次编译到处乱跑要归功于Java虚拟机(JVM),JVM充当翻译员,将字节码文件翻译为当时平台看得懂的0、1序列,从而做到平台无关。

  为什么要学习JVM?

  首先,研究JVM为了通过技术面试,升职加薪。

  这样说或许过于直白,过于功利,但是行情即是如此。目前Java依然是一线大厂的主流开发语言,学好Java依然是求职的必备技能之一。相信很多做Java开发的同学对Java虚拟机是又爱又恨,经常在面试过程中被面试官问到哑口无言,JVM知多少,直到面试方恨少。为什么面试官偏爱问JVM?因为面试官无法通过简历上写的项目经历来判断求职者的技术深度,只有深挖技术细节来判断,而JVM便是JAVA面试中的必问知识点。

  其次,研究JVM是解决工作中复杂问题的基础。

  很多和内存有关系的线上问题最终都要通过看GC日志、修改JVM参数来解决,不熟悉JVM便没办法解决疑难杂症。除了Java本身,很多运行在JVM之上的开源软件,比如笔者所熟悉的Elasticsearch搜索引擎,在使用过程中经常遇到OOM问题、GC频繁等问题,最终都需要通过JVM调优来解决,不懂JVM便束手无策。

  最后,研究JVM是一个程序员的内功。

  CRUD占据了程序员日常工作的大部分时间,要想有深入的提高,就需要研究底层原理和源代码了,而研究源代码就少不了JVM的知识,很多问题的解决需要深入到字节码的层次去分析。编程工作是高强度的脑力活动,程序员的价值体现在分析问题和解决问题的能力上,而不是重复而低端的体力劳动,就像武侠小说中习武者一样,初学者难免刀枪棍棒花拳绣腿,实际上都是花拳绣腿华而不实,真正的高手总是在修炼内功心法,追求登峰造极独孤求败的境界。研究好JVM便能通过现象看本质,不被表面现象所蒙蔽,无论出现什么新技术、新概念都能万变不离其宗,计算机技术在底层都是相通的,研究好JVM便能触类旁通。

  怎么学JVM?

  JVM作为一款虚拟机,里面包含方方面面的底层技术知识,想学好学精并不容易。

  我的第一本JVM教程是周志明老师的《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》,这本书带我入门,从JVM的历史讲起,对内存管理、程序编译与优化、高并发等主题对JVM进行了全面而深入的分析,受益良多,常读常新。

  这本书累计销量30万册接近零差,有太多丰碑级标签: 大厂面试最佳参考手册、进阶架构师必读、Java优化神书……

  最近,周志明老师对深入理解Java虚拟机做了更新,出版了《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》,更新幅度近50%,旧版本基于JDK 7,新版本基于JDK 12和预览版JDK 13, 更完善、更丰富、更系统、更深入、更实操、更易读,推荐大家购买学习!

扫一扫手机访问

发表评论