当前位置: 首页 > news >正文

#我与Java虚拟机的故事#连载04:一本让自己没面子的书

作者:看山

写这篇读后感的缘由是《深入理解Java虚拟机》第三版即将面世了,先拜谢周教授,相信很多人得益于周教授的这本书。

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虚拟机:JVM高级特性与最佳实践(第3版)》

推荐语:这是一部从工作原理和工程实践两个维度深入剖析JVM的著作, 自2011年上市以来,前两个版本累计印刷36次,销量超过30万册,大厂面试最佳参考手册,进阶架构师必读、Java优化神书,这些标签成就了它成为原创计算机图书领域不可逾越的丰碑。

第3版在第2版的基础上做了重大修订,内容更丰富、实战性更强:根据新版JDK对内容进行了全方位的修订和升级,围绕新技术和生产实践新增逾10万字,包含近50%的全新内容,并对第2版中含糊、瑕疵和错误内容进行了修正。

你与世界

只差一个

公众号

相关文章:

  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • Java异步编程并没有广泛使用起来,这是什么原因? (文末有福利)
  • 新书推荐 | Java核心技术 卷II 高级特性(原书第11版)
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • 中台四杰与阿里往事
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • InfoQ 编辑部开年聊聊 2020 年值得关注的十大技术趋势
  • 达摩院十大科技趋势发布:2020 非同小可!
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • 新书推荐 | 深入浅出图神经网络:GNN原理解析
  • 新书推荐 | 现代机器人学:机构、规划与控制
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • 什么是机器学习?有哪些应用?终于有人讲明白了
  • TIOBE 1 月编程语言排行榜:C 语言再度「C 位」出道!
  • 新书推荐 | 数据流机器学习:MOA实例
  • Java 网络编程(2):UDP 的使用
  • Java教程_软件开发基础
  • Octave 入门
  • oschina
  • Terraform入门 - 1. 安装Terraform
  • win10下安装mysql5.7
  • windows下mongoDB的环境配置
  • 第2章 网络文档
  • 多线程事务回滚
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 类orAPI - 收藏集 - 掘金
  • Mac 上flink的安装与启动
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​批处理文件中的errorlevel用法
  • #1015 : KMP算法
  • #QT(智能家居界面-界面切换)
  • ${factoryList }后面有空格不影响
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (zt)最盛行的警世狂言(爆笑)
  • (办公)springboot配置aop处理请求.
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (汇总)os模块以及shutil模块对文件的操作
  • (篇九)MySQL常用内置函数
  • (一)VirtualBox安装增强功能
  • (转)Windows2003安全设置/维护
  • (转)四层和七层负载均衡的区别
  • .NET CF命令行调试器MDbg入门(一)
  • @angular/cli项目构建--http(2)
  • @property @synthesize @dynamic 及相关属性作用探究
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [100天算法】-x 的平方根(day 61)
  • [20150321]索引空块的问题.txt
  • [20171106]配置客户端连接注意.txt
  • [Android学习笔记]ScrollView的使用