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

#我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升

作者:徐凌峰

作为周老师的忠实粉丝,其实一直在微博上关注这本书第三版的消息,之前接触到这本书的时候是从第二版“小蓝“开始的,那会儿搜索JVM相关资料时,基本上都会推荐到这本书,毫不夸张地说,至少在国内,《深入理解Java虚拟机》这本书就是学习JVM的最好资料了。

接下来,我来介绍一下自己跟这本书的故事吧。

学生时代:

我的大学专业是数学,在刚开始转行学习Java的时候,最开始有一个很模糊的概念,简单知道通过Java虚拟机可以实现“一处编写,多处执行”的功能。但是,因为是刚刚处于Java入门阶段,总感觉JVM是一个很高端的概念,基本上接触不到,只知道安装一个JDK,我的“Hello,World”即可跑起来。于是学了常用框架就想着先去找个工作,结果面试的时候被问到JVM的相关问题时,哑口无言。后来便去网上找相关资料,发现网友都在推荐周老师的《深入理解Java虚拟机-JVM高级特性与最佳实践》这本书,于是乎赶紧购买了一本,买来之后通读了一遍,当然那会儿仅仅记住了一些内存模型和结构图之类的,不过也是帮我顺利通过了面试.成功找到了一份工作。

工作后:

随着进入实际的工作中,才发现JVM相关知识的实际作用。特别是项目中偶尔会发生的一些OOM异常、GC日志等,最开始查看起来真是一头雾水,只能看着大佬们通过各种命令工具成功定位解决,然后发现成功定位后要修复这些问题时,就必须掌握JVM的内存结构和运行原理,因此我再度拾起了周老师的这本书。重点关注书中一些实战部分的章节,学习生产环境下对JVM的问题定位。但是实际环境中也不会有这么多OOM的问题,于是我在测试环境中自己调整JVM的启动参数来模拟,经过一番理论加实战的练习,对JVM的问题也有了一定的了解,不再是两眼一抓瞎的状态了。

随着工作年限的增加,对Java的理解也变深了。有时候会思考一些更深的问题了,例如new Object() 这个指令的底层究竟发生了什么,一个类是如何加载到虚拟机里去的,或者一个写好的类在运行时是如何动态的修改它的一些代码的。这些问题,其实在深入研究JVM运行机制后都可以找到答案,在本书中就有他们的原理及解答。

有了周老师这本书的帮助,我的Java技术水平有了一个本质的提升。关于JVM有了更加清晰的认识,通过不断的研究学习这本书,我对于目前线上服务的内存特别敏感。对于各个垃圾收集器的使用也很熟练,有事没事的就去看线上服务的垃圾回收情况和GC日志.对于jinfo、jstack、jmap以及jstat等内存调优命令也是比较熟悉,并且也能熟练的使用mat、arthas等工具。再也不是曾经那个一无所知的懵懂少年了。

周老师的《深入理解Java虚拟机-JVM高级特性与最佳实践》第三版已经出版,看了目录之后,感觉在第二版的基础上进行了很多更新,结合了当前最新的JDK13 EA,给我们讲解全新的JVM相关特性与技术,带领我们与时俱进,真正做到了实战与技术的相结合。

总结:

毫不夸张地说,这本书是Java开发者必备的技术图书,也是我们大多数同学的JVM启蒙书籍,这本书使我们更加系统的接触到了JVM相关的特性与知识。这么经典的书籍,作者也是一直保持着更新,之前第二版用的JDK7或许有一些过时,目前这本第三版基于JDK12和JDK13 EA所写,能够让读者了解到最新的JVM知识,新增的一些垃圾收集器,以及作者更加丰富的经验和沉淀。入手这本书无论是丰富自身知识,提高工作能力,还是应付面试顺利进大厂,都是无比的超值。

推荐阅读

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

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

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

你与世界

只差一个

公众号

相关文章:

  • 华为、阿里等知名公司年终奖发了多少?
  • 2020 云原生 7 大趋势预测
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • 给平庸程序员的12条建议
  • 华章新春献礼 扫码免费领书
  • 编程语言书单(Java核心技术篇)
  • ​人工智能书单(数学基础篇)
  • 中国医院需要什么样的数据中台?
  • 人工智能书单(机器学习理论篇)
  • 智能时代书单
  • 人工智能书单(机器学习实践篇)
  • 人工智能书单(图像处理与计算机视觉篇)
  • 立春好消息:华章图书持续霸榜京东、当当计算机畅销新书榜!
  • 小白入门机器学习必备:编程语言环境介绍及搭建
  • Linux系统运维书单
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 《Java编程思想》读书笔记-对象导论
  • co模块的前端实现
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • java 多线程基础, 我觉得还是有必要看看的
  • leetcode388. Longest Absolute File Path
  • mysql常用命令汇总
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • nodejs调试方法
  • 对象引论
  • 解析带emoji和链接的聊天系统消息
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 前端面试总结(at, md)
  • 嵌入式文件系统
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 运行时添加log4j2的appender
  • 《码出高效》学习笔记与书中错误记录
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (1)STL算法之遍历容器
  • (12)目标检测_SSD基于pytorch搭建代码
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (Java)【深基9.例1】选举学生会
  • (二)springcloud实战之config配置中心
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (已解决)什么是vue导航守卫
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (转载)hibernate缓存
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .net mvc部分视图
  • .net访问oracle数据库性能问题
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • [ C++ ] STL---string类的模拟实现
  • []T 还是 []*T, 这是一个问题
  • []指针