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

#我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜

作者:我的UDP不丢包

在我大三接触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大对书中错误点进行了指正),急着想通读一遍了。还顺带着推销了一波朋友圈。

虽然“小蓝”升级成“小紫”(第三版),不管接下来是“小紫”还是“小蓝”,“小蓝”陪着我找bug、找工作我都记忆犹新。

推荐阅读

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

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

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

你与世界

只差一个

公众号

相关文章:

  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • 从治疗癌症到预测犯罪,细数数据科学在各领域的神奇应用
  • 入门大爆炸式发展的深度学习,你先要了解这4个最流行框架
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • Java异步编程并没有广泛使用起来,这是什么原因? (文末有福利)
  • 新书推荐 | Java核心技术 卷II 高级特性(原书第11版)
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • 中台四杰与阿里往事
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • InfoQ 编辑部开年聊聊 2020 年值得关注的十大技术趋势
  • 达摩院十大科技趋势发布:2020 非同小可!
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • 新书推荐 | 深入浅出图神经网络:GNN原理解析
  • 新书推荐 | 现代机器人学:机构、规划与控制
  • 「面试题」如何实现一个圣杯布局?
  • angular组件开发
  • Fundebug计费标准解释:事件数是如何定义的?
  • Git学习与使用心得(1)—— 初始化
  • Spark RDD学习: aggregate函数
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • 从重复到重用
  • 第十八天-企业应用架构模式-基本模式
  • 翻译:Hystrix - How To Use
  • 将回调地狱按在地上摩擦的Promise
  • 解决iview多表头动态更改列元素发生的错误
  • 开发基于以太坊智能合约的DApp
  • 力扣(LeetCode)21
  • 区块链技术特点之去中心化特性
  • 通过npm或yarn自动生成vue组件
  • 异步
  • 智能网联汽车信息安全
  • 最近的计划
  • hi-nginx-1.3.4编译安装
  • 阿里云API、SDK和CLI应用实践方案
  • # 数论-逆元
  • ###C语言程序设计-----C语言学习(6)#
  • #大学#套接字
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • $NOIp2018$劝退记
  • ()、[]、{}、(())、[[]]命令替换
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (多级缓存)多级缓存
  • (二)linux使用docker容器运行mysql
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (学习日记)2024.02.29:UCOSIII第二节
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .net6Api后台+uniapp导出Excel
  • .NET程序员迈向卓越的必由之路
  • @NoArgsConstructor和@AllArgsConstructor,@Builder