学习JVM有什么用

作者因面试中JVM相关问题回答不佳而失败,从而开启JVM学习。面试中常涉及JVM知识,掌握它能获更好工作机会。了解JVM原理可助写出好代码、排查虚拟机问题,初级开发者未来也会接触,中高级开发者应深入了解。

不管你有没有学习过JVM,但总有一瞬间会让你想要学习它。

因为一次难忘的面试经历,让我想要学习好它。

那是三年前的一个下午,我在深圳北附近的一家公司面试JAVA中级开发工程师。

在一间办公室里,我对面坐着两个面试官。

他们俩轮流向我提问,我都对答如流,当我都觉得这次面试稳了的时候。

其中一个面试官缓缓的说道:“了解JVM运行时数据区的内存吗?分为哪几块?”。

我自信的回答:“分为程序计数器、本地方法栈、虚拟机栈、方法区和堆,其中程序计数器、本地方法栈、虚拟机栈是线程私有,方法区和堆是线程共享”。

他又问道:“堆还可以再细分一点吗?”。

我接着回答:“堆还可以细分为:新生代和老年代,新生代再细致一点可以分为Eden空间、Survivor空间等”。

另一个面试官也问道:“为什么要将堆分代?”。

我支支吾吾的说:“不太清楚。。。”。

当时的我从没有思考过这个问题,只知道书上说要分代,也没想过为什么。

后来他们又问了垃圾回收算法、垃圾回收器和类加载机制方面的问题,我回答的不是很好。

面试完后他们说先商量一下,有结果hr会通知我,结果就是没有通知。

因为面试失败,这是我最开始想要学习JVM的原因,那你为什么要学习JVM?

这是一个与自身利益相关的问题,因为在面试中会问到JVM。

学习JVM能有更好的工作机会,可以拿更高的工资。

在面试中问到JVM的概率很大,面试中级和高级开发工程师,几乎会问到JVM,还有些面试初级开发工程师也会问到JVM。

当面试问到了,如果你回答不出,你可能会错失这次机会。

如果你回答出来了,那你就比别人更有机会被录用。

有意思的是,当你越害怕别人问你一个知识点的时候,别人会越发问你这个知识点。

了解虚拟机如何执行代码,才能写出更好的代码,提升技术能力。

了解了JVM的原理才知道JAVA的运行原理,我们知道线程同步可以用synchronized和Reentrantlock,那我们在写代码的时候到底用哪个?

很多人都说synchronized是重量级锁,Reentrantlock是轻量级锁,而且比synchronized要灵活。

但是synchronized底层原理后,你会知道虚拟机会对它进行优化,涉及到锁升级,从无锁、偏向锁、自旋锁、最后才向操作系统申请重量级锁。

java程序运行在虚拟机上,一旦出现与虚拟机相关的问题,如果不了解它,那么很难排查出问题。

当你的Java应用程序每隔一段时间响应很慢,或者没有响应,可能是在进行垃圾回收。

垃圾回收会过程会使应用程序产生停顿,停顿产生时整个应用程序线程都会被暂停。

没有任何响应, 有点像卡死的感觉,这个停顿称为STW。

这时需要配置JVM参数,通过分析的手段定位问题,然后调优。

如果你是一个初级JAVA开发工程师,可能你暂目前还不用接触JVM相关知识。

你现在只要学好JAVA语法,熟悉各种API就行,但在你的职业道路上你一定会接触到它的。

如果你是一个中级或高级开发工程师,那你或多或少的接触过JVM相关知识。

只有你了解了JAVA虚拟机执行代码的原理,才能写出更好的代码。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值