不知不觉2021新的一年已悄然到来,回首2020年,真的有太多的不容易啊,一场突如其来的疫情,让人们的工作和生活方式发生了很大的变化,同时也启发我们要珍惜当下的生活,要做好自己值得做的事情。2020年最后一个月的时候,我打算着开始写博客,初衷是通过这种方式记录自己的成长与进步。万事开头难,我选择将重点放在了Java基础上面,借此巩固一下基础,相信不积跬步无以至千里,点滴付出终将有所收获。当写到一定程度时,打算将工作中或者以前学习中也进行整理,还可能会向其他技术方向拓展,终极目标是向全栈方向发展,构建一套属于自己的知识体系。
我还相信好记性不如烂笔头,时间总会让人遗忘一些细节的东西,记录并写下来会更好,日后用到时便可温故而知新。Java基础可不仅仅是语法结构和各个版本引入的基础特性,如集合,枚举,泛型,注解,并发等,还有设计模式,Java虚拟机等,所以细想起来Java的知识面还是挺多的,毕竟多年来它一直领骚着开发语言排行榜,地位还是很难动摇的。
作为Java程序员,满足于日常的CRUD可不是件好事,长此以往,这样终究会落后和被淘汰的,况且如今的Java版本更迭周期变得越来越短,新特性和新技术层出不穷,当你还热衷于Java8带来的欣喜变化时,Java16已经朝你迎面而来了,因此,保持学习的热情和态度至关重要,学无止境。
当自己掌握了基础的开发技能,并且已经可以满足工作所需了,难道就只止步于日常的CRUD吗?当然不,打算写博客的做法也是想打破这一局面的一种行动,让自己不仅仅会用某项技术,还要知道这其中的原理和机制。之前,自己略读过一遍《深入理解Java虚拟机》一书,当时该书的第三版还没问世,那时候可能是自己的基础并没那么好,整本书读下来有点蒙圈的感觉,有些东西好像知道又好像不知道,有点似懂非懂,甚至在想看这玩意平时又用不到。后来,果真过了一段时间有些东西真的记不清了,比如常见的GC有哪些,各采取的是什么算法,双亲委派模型是什么样的。现在回想起来,还是要感谢下当时的自己开始有意识的去往最基础的地方进发了,当有了一定的积累和见识后,再去学习和整理Java虚拟机应该没那么难了。
当然,有一个很客观的问题,JVM参数的调优在工作中真的会用得到?不管用不用得到,作为Java技术栈的重要组成部分,没有理由不去学习它。当然还有一个理由该书中也提到了,作为参考吧,原话是:对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出问题,看起来由虚拟机管理内存一切都很美好。不过,也正是因为Java程序员把控制内存的权力交给了Java虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那排查错误、修正问题将会成为一项异常艰难的工作。
这里,参考《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》一书,列出接下来要重点学习和整理的JVM知识清单,不能算巩固吧,也算是重新深入学习Java虚拟机了。
- JVM运行时数据区域
- HotSpot虚拟机对象的创建,内存布局和访问定位
- 垃圾收集算法
- 垃圾收集器
- JVM性能监控与故障处理工具
- JVM参数调优
- JVM类加载机制,类加载时机和过程
- Java模块化系统
- 虚拟机栈中的栈桢与方法调用
- JVM对动态语言类型的支持
- 基于栈的字节码解释执行引擎
- Javac编译器
- Java语法题
- 后端编译器,即时,提前,Graal
- Java内存模型
- 线程安全与锁优化
《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》
链接: https://pan.baidu.com/s/120o6oasb_QvxzdRGrBjevA 提取码: 4kiq