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

简介: 写这篇读后感的缘由是这本书的第三版即将面世了,先拜谢周教授,相信很多人得益于周教授的这本书。

写这篇读后感的缘由是这本书的第三版即将面世了,先拜谢周教授,相信很多人得益于周教授的这本书。


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,等学习完第三版之后再来拔旗。


image.pngimage.pngimage.png

image.png

目录
相关文章
|
1月前
|
Java
Java常见JVM虚拟机指令(47个)
Java常见JVM虚拟机指令(47个)
37 3
Java常见JVM虚拟机指令(47个)
|
24天前
|
Java 数据安全/隐私保护 Windows
【Azure Developer】使用Java代码启动Azure VM(虚拟机)
【Azure Developer】使用Java代码启动Azure VM(虚拟机)
|
25天前
|
存储 Java API
【Azure Developer】通过Azure提供的Azue Java JDK 查询虚拟机的CPU使用率和内存使用率
【Azure Developer】通过Azure提供的Azue Java JDK 查询虚拟机的CPU使用率和内存使用率
|
2月前
|
Arthas 监控 算法
JVM成神路终章:深入死磕Java虚拟机序列总纲
JVM成神路终章:深入死磕Java虚拟机序列总纲
|
2月前
|
监控 Oracle Java
(一)JVM成神路之初识虚拟机 - 探寻Java虚拟机的前世今生之秘
JVM(Java Virtual Machine)Java虚拟机的概念大家都不陌生,Java之所以可以做到“一次编译,到处运行”的跨平台性,其根本原因就在于JVM。JVM是建立在操作系统(OS)之上的,Java虚拟机屏蔽了开发人员与操作系统的直接接触,我们在通过Java编写程序时,只需要负责编写Java代码即可,关于具体的执行则会由JVM加载字节码后翻译成机械指令交给OS执行。
|
1月前
|
监控 算法 Java
深入理解Java虚拟机:JVM调优与性能提升
本文旨在为Java开发者提供一条清晰的路径,以深入掌握Java虚拟机(JVM)的内部机制和性能调优技巧。通过具体案例分析,我们将探讨如何识别性能瓶颈、选择合适的工具进行监控与调试,以及实施有效的优化策略,最终达到提高应用程序性能的目的。文章不仅关注理论,更注重实践应用,帮助读者在面对复杂的Java应用时能够游刃有余。
49 0
|
2月前
|
存储 Java 对象存储
Java虚拟机(JVM)中的栈(Stack)和堆(Heap)
在Java虚拟机(JVM)中,栈(Stack)和堆(Heap)是存储数据的两个关键区域。它们在内存管理中扮演着非常重要的角色,但各自的用途和特点有所不同。
38 0
|
2月前
|
Java
Java演进问题之单个虚拟机的最大线程数量一般会设置到200至400条如何解决
Java演进问题之单个虚拟机的最大线程数量一般会设置到200至400条如何解决
|
2月前
|
存储 监控 算法
探索Java虚拟机:深入理解JVM内存模型和垃圾回收机制
在Java的世界中,JVM是核心所在,它不仅承载着代码的运行,还管理着内存资源。本文将带你深入了解JVM的内存模型和垃圾回收机制,通过具体数据与案例分析,揭示它们对Java应用性能的影响,并探讨如何优化JVM配置以提升效率。
|
前端开发 Java 应用服务中间件
【Java虚拟机】JVM类加载机制和双亲委派模型
【Java虚拟机】JVM类加载机制和双亲委派模型
【Java虚拟机】JVM类加载机制和双亲委派模型