Java程序员为什么要了解底层Java虚拟机
Posted JavaGuide
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java程序员为什么要了解底层Java虚拟机相关的知识,希望对你有一定的参考价值。
写在前面
深入理解Java虚拟机系列文章:
介绍下Java内存区域(运行时数据区)。
对象的访问定位的两种方式。
如何判断对象是否死亡(两种方法)。
简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)。
垃圾收集有哪些算法,各自的特点?
HotSpot为什么要分为新生代和老年代?
常见的垃圾回收器有那些?
介绍一下CMS,G1收集器。
Minor Gc和Full GC 有什么不同呢?
JVM调优的常见命令行工具有哪些?
简单介绍一下Class类文件结构(常量池主要存放的是那两大常量?Class文件的继承关系是如何确定的?字段表、方法表、属性表主要包含那些信息?)
简单说说类加载过程,里面执行了哪些操作?
对类加载器有了解吗?
什么是双亲委派模型?
双亲委派模型的工作过程以及使用它的好处。
为什么我们要学习虚拟机?
说的直白点,我们学习Java虚拟机很多时候都是为了去应付面试,因为我们目前所学知识的大部分应用场景或许还真的不需要去和Java虚拟机较真,我们大多数时候只是认为它就是一个默默在背后为我们工作的工厂一样。Java的跨平台、自动的垃圾回收以及Java程序的运行等等功能,都是它在背后默默为我们提供支持。
其实我觉得应付面试是次要的,往远了说,如果你想提高自己的技术深度的话,那么深入理解Java虚拟机便是你不得不掌握的一门内功心法了。这不光能够让我们编写出效率更高的程序,而且能明显提高个人的Bug修复能力。
推荐书籍
首推周志明的《深入理解Java虚拟机》这本书,建议可以多阅读几遍,因为往往在第一遍阅读的时候可能会有点难度,一般再读第二遍的时候会好很多。我觉得本书最主要的优点是:不光光有理论知识的铺垫,而且在大量篇幅穿插了实战。说句实话,国人能出这样一本好书,我觉得值得很多人去学习。
推荐教程
非常推荐极客时间的专栏——《深入拆解Java虚拟机》。
该专栏共 36 期,分为四大模块。
模块一 Java 虚拟机基本原理
剖析 Java 虚拟机的运行机制,逐次介绍 Java 虚拟机的设计决策以及工程实现。
模块二 高效编译
在本模块中,作者将带你探索 Java 编译器,以及内嵌于 Java 虚拟机中的即时编译器,帮助你更好地理解 Java 语言特性,继而写出简洁高效的代码。
模块三 代码优话
在实践过程中我们经常会遇到形形色色的性能问题,解决方法不外乎加机器加内存。本模块将介绍上述方法失效后的 Plan B,即如何利用工具定位并解决代码中的潜在问题,以及在已有工具不适用的情况下,如何打造专属轮子。此外,本模块还将介绍对 JVM 内存管理失去信心的开发者所选取的解决方案,以备不时之需。
模块四 虚拟机黑科技
当一门程序语言成熟稳定后,技术大神们便热衷于用这种语言开发实现编译器或虚拟机。在 Java 10 中,Graal 已作为试验性即时编译器一同发布。本模块将详细科普 GraalVM 的各个组成部分,其中包括编译器 Graal,语言实现框架 Truffle,以及支持 Ahead-of-Time(AOT)编译的 SubstrateVM。
专栏目录
订阅福利
福利一:限时优惠价¥45,原价¥68,7 月 28 日恢复原价
福利二:每邀请一位好友购买,你可获得 18 元现金返现,多邀多得,上不封顶,立即提现(提现流程:极客时间 App - 我的 - 分享有赏),扫码,即可订阅Java进阶专栏。
后面推荐教程这一部分可能带有一点广告的意思,因为理论上如果你扫我的二维码购买的话,我会有18元的返现。不过我觉得好课程就要推荐,如果大家感兴趣的话可以扫我的二维码或者自己单独购买一波,45元也就差不多半个英雄联盟皮肤的价钱。
最后,本文涉及的广告,纯属个人推荐,无商业合作。
以上是关于Java程序员为什么要了解底层Java虚拟机的主要内容,如果未能解决你的问题,请参考以下文章