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

#我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道

作者:Gavin

开篇

作为一个年近三十的老Java码农,不可避免地要学习Java虚拟机方面的知识,突闻《深入理解Java虚拟机:JVM高级特性与最佳实践》出了第3版,喜极而泣,提笔临表。

江湖菜鸟

当年我还在学校,还是一只小菜鸟的时候,懵懵懂懂地进入了Java的世界,初学SSH框架写出了人生第一个项目,一个论坛仅仅有登录注册、帖子列表、发帖回复、删除编辑的功能,那时候觉得Java如此神奇和不可思议。

初出茅庐

慢慢的,SSH在我手上如同一把梭,玩得溜的飞起,后来又接触了mybatis、SpringMVC,以及 Struts2爆出致命漏洞又是另外一个故事了。当我以为我SSH大功告成,各种CURD不在话下,仿佛深山老林得遇九阳神功,苦练十年,正准备下山除魔卫道大展拳脚。

当头棒喝

我也迎来了第一次正式的JAVA面试,前面和面试官都聊得非常到位,做过一些实战项目,进入公司基本能上手开发简单功能,数据结构、计算机基础都不错,JS、CSS、HTML也都会用,最后将要结束的时候,面试官问了一句,JVM你应该知道吧?垃圾回收算法了解吗?

我瞬间慌了,JVM好像是Java虚拟机,垃圾回收听过,不就是回收对象吗?还有什么算法?

瞬间自己紧张了起来,一顿 嗯…啊…,支支吾吾半天,绞尽脑汁把自己知道的那么一点点的JVM知识都挤出来了。

面试官明显看出了我的紧张,也看出了我的空洞,仿佛一个警察掌握了确凿的事实证据,而我却是那个坐在铁椅上带着手铐的小偷。

面试官转而微微一笑,说:没事别紧张,才刚毕业,没关系的。

但是这一刻,在我眼里却像一个警察微笑的对我说,没关系,坦白从宽,抗拒从严,供出你的同伙,我争取帮你减刑。

走火入魔

回来以后,疯狂地找JVM的学习资料,什么引用计数法、根路径搜索、双亲委派、内存模型、垃圾回收,再到后面的对象头、栈帧结构…太多了!太乱了!瞬间感觉JVM如浩瀚烟海,连绵不绝,仿佛一眼望不到头。

JVM的大海,让我迷失了,谁能在这苦海度我一程。

回头是岸

突然看到网上有一篇帖子推荐了《深入理解Java虚拟机:JVM高级特性与最佳实践》,被奉为JVM必读著作。

我如同一个深中玄冥神掌,寻遍神医,病之将死之时,有人说你往前面去,前面有一种九阳神功能救你的命。

我立马通过那个神秘的链接,下载了影印版的PDF,我如饥似渴,如狼似虎的栽进JVM的海洋,而《深入理解Java虚拟机:JVM高级特性与最佳实践》就是那把钥匙,就是度我的那片独木舟。

再见江湖

后来的后来,还是没有进入这家公司,而是去了另外一家公司,而我也终于买到了纸质版的《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版。

再后来我依然在江湖中闯荡,所幸的是,我的头发还剩不少。

——纪念引导我进入JVM新世界大门的《深入理解Java虚拟机》

推荐阅读

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

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

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

你与世界

只差一个

公众号

相关文章:

  • Java异步编程并没有广泛使用起来,这是什么原因? (文末有福利)
  • 新书推荐 | Java核心技术 卷II 高级特性(原书第11版)
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • 中台四杰与阿里往事
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • InfoQ 编辑部开年聊聊 2020 年值得关注的十大技术趋势
  • 达摩院十大科技趋势发布:2020 非同小可!
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • 新书推荐 | 深入浅出图神经网络:GNN原理解析
  • 新书推荐 | 现代机器人学:机构、规划与控制
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • 什么是机器学习?有哪些应用?终于有人讲明白了
  • TIOBE 1 月编程语言排行榜:C 语言再度「C 位」出道!
  • 新书推荐 | 数据流机器学习:MOA实例
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • __proto__ 和 prototype的关系
  • Android Studio:GIT提交项目到远程仓库
  • gf框架之分页模块(五) - 自定义分页
  • Java多线程(4):使用线程池执行定时任务
  • Linux中的硬链接与软链接
  • React组件设计模式(一)
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 思维导图—你不知道的JavaScript中卷
  • 应用生命周期终极 DevOps 工具包
  • HanLP分词命名实体提取详解
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​如何防止网络攻击?
  • #pragma 指令
  • #QT(TCP网络编程-服务端)
  • #QT(一种朴素的计算器实现方法)
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (黑马C++)L06 重载与继承
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (四)Linux Shell编程——输入输出重定向
  • (未解决)macOS matplotlib 中文是方框
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .Net - 类的介绍
  • .net core 6 集成和使用 mongodb
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET 服务 ServiceController
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .net通用权限框架B/S (三)--MODEL层(2)
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • [30期] 我的学习方法
  • [Arduino学习] ESP8266读取DHT11数字温湿度传感器数据
  • [BZOJ 1040] 骑士
  • [C#]C# winform实现imagecaption图像生成描述图文描述生成
  • [cogs2652]秘术「天文密葬法」
  • [GYCTF2020]Ez_Express
  • [Lucas定理]【学习笔记】