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

#我与Java虚拟机的故事#连载13:有这本书就够了

作者:蒋超

刚开始接触Java时,对JVM是无知的,确实,是无感知的。因为Java的设计者,为了降低语言的复杂度,屏蔽实现细节,将很多背后的操作"隐藏"了。

在很长时间里,不需要了解Java虚拟机,也能写出可以运行的代码,甚至完美地运行一个Java程序。什么垃圾回收机制、类加载机制统统都抛之脑后,好像也没人说你不懂Java。

直到…一次OOM的出现。

解决Bug的能力与手段,决定了你想成为程序员还是好程序员。

我开始了漫长的探索之旅…

对于深入分析OOM,网上能找的资料太多也太杂,对于现象和解决方法都有比较多的介绍,但是能谈到原理的,又能讲清楚的少之又少。

直到我看到了这本书《深入理解Java虚拟机》,才发现,JVM东西太多了。在不知道这些内容的时候,并不会对我写的代码造成什么影响,有些运行参数没有配置也不会出问题,或者复制别人的配置好的运行参数,都能"蒙混过关"。当真正深入JVM,才发现,原来还有完全不一样的另一个世界。

虚拟机对Java开发开发者来说,太底层了,也太难理解了,很多时候,对底层的了解不足以应对现有遇到的场景。

在大学期间,我在图书馆遇到了《深入理解Java虚拟机》这本书,第一次读,很难有一个清晰的认识。因为对于一门语言,实战的效果远大于其他任何方式对语言的认知。但是《深入理解Java虚拟机》偏向理论,甚至里面的实战内容,在当时也不太能理解这样做的方式。

工作中,遇到了越来越多的问题,也更加重视底层原理与整体设计,就想着对整个Java体系进行重新知识梳理。于是,就采用了我觉得对知识理解最系统的方式——看书。

基础的Java web、高并发应对处理设计、分布式理论、缓存处理、新型的SpringCloud、架构设计,还有对Java底层的JVM理解。

每本书都是不同的领域与视角,对Java的描述方向各不相同,毕竟在这个行业4年了,工作经验积累的同时,也需要不断自我充电。

《深入理解Java虚拟机》 是一本对JVM讲得比较深入的书,甚至整个行业对JVM讲得比较好的书籍也没几本。但是客观地讲,这本书对于Java新人来说,是不太友好的。为了能深入到JVM的底层原来,需要比较多的知识背景,如果实践经历不够多,也比较难理解JVM这样设计的好处。当然,在对Java本身有一定理解之后,这本书将对之后代码质量有一个质的飞越,线上处理问题也能更得心应手。

要是在读源码,比如Spring的源码调式时,遇到了不能理解的设计理念,或者对于高并发的理解不够系统,那么这本书将会解释很多的疑问。

《深入理解Java虚拟机》第一版写与2011年,时隔两年之后的2013年,作者对原书进行升级《深入理解Java虚拟机》第二版。但是2014年发布的Java8,更具有划时代的意义,目前公司使用的也正是Java8,对于原书的升级,这么多年来一直没有消息。甚至在知乎上有这样的讨论 《深入理解Java虚拟机》过时了吗?

如今,作者终于对原书进行升级,直接过度到Java12,从书的目录看,有较大改变,精华部分依旧在,增加了一些新的设计理念。

也许,对你,深入理解Java虚拟机,有它就够了。

推荐阅读

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

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

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

你与世界

只差一个

公众号

相关文章:

  • 小程序三周年:超8000亿交易额,商业生态正当时
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • 新手学Python, 如何从入门到入土变为从入门到快速上车?
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • 沿用70多年的经典数据可视化方法,如何用Python实现?
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • 学AI哪家强?2019全球排行清华第1,北大第2
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • 华为、阿里等知名公司年终奖发了多少?
  • 2020 云原生 7 大趋势预测
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • 给平庸程序员的12条建议
  • 华章新春献礼 扫码免费领书
  • 编程语言书单(Java核心技术篇)
  • ​人工智能书单(数学基础篇)
  • [LeetCode] Wiggle Sort
  • 30天自制操作系统-2
  • gulp 教程
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • 对象管理器(defineProperty)学习笔记
  • 给Prometheus造假数据的方法
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 前端面试总结(at, md)
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 深入浅出Node.js
  • 小程序测试方案初探
  • 一道闭包题引发的思考
  • FaaS 的简单实践
  • linux 淘宝开源监控工具tsar
  • 整理一些计算机基础知识!
  • 组复制官方翻译九、Group Replication Technical Details
  • # Panda3d 碰撞检测系统介绍
  • #NOIP 2014# day.2 T2 寻找道路
  • (arch)linux 转换文件编码格式
  • (C语言)二分查找 超详细
  • (function(){})()的分步解析
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (ZT)一个美国文科博士的YardLife
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (三) diretfbrc详解
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .net core使用ef 6
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .Net 路由处理厉害了
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .net专家(张羿专栏)
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [Angular 基础] - 表单:响应式表单
  • [Angularjs]ng-select和ng-options
  • [BJDCTF2020]The mystery of ip1
  • [BZOJ2850]巧克力王国