咸阳微网站建设,顺义制作网站,给企业做免费的推广,网站建设升级转载自 面试为什么需要了解JVM
说在前面
如果你经常注意面试题#xff0c;你会发现现在面试题多多少少会含有jvm相关的面试题#xff0c;那么为什么现在面试需要了解或者问面试题呢#xff1f;
主题
谈谈自己的理解#xff0c;概括为以下几个方面#xff1a; 的确很重…转载自 面试为什么需要了解JVM
说在前面
如果你经常注意面试题你会发现现在面试题多多少少会含有jvm相关的面试题那么为什么现在面试需要了解或者问面试题呢
主题
谈谈自己的理解概括为以下几个方面 的确很重要。 供大于求。 面试风气。
下面就针对这几点谈谈。
的确很重要
随着互联网的发展高并发高可用、快速响应成为软件的必须而JVM与这些有着密切关联。之前JVM系列好多都是一些由于STW影响到快速响应问题忽然网站慢一下抖动下等问题下面谈谈最近通过JVM排查到的高并发高可用问题。在高可用高并发下面问题原因可能会很多比如cpu异常高、磁盘IO高、SWAP空间等有可能很多问题都是综合性的问题
以前在我的认知里面如果服务运行有问题最简单有效快速地办法就是重启最近遇到了问题打破了我对该方法的认知。
某业务线最近集群服务升级忽然上线上去不能提供服务之后影响到整个集群查看当时服务器情况负载、cpu、io、swap、磁盘等都正常查看日志就是卡在最后一行不动了也没有发现OOM等任何异常。
如果是之前估计这个问题我也就排查不了了现在排查问题多了一个维度JVM的确有时候需要考虑的并且现在很多监控工具都会考虑到JVM的查看gcutil查看比例发现from 100% eden 100% old 100%但是服务就是没有OOM执行任何都命令都非常缓慢了更别谈访问请求了查看具体gc日志发现concurrent mode failure 并且时间很长猜测就是一瞬间量把内存给用完了导致from 100% eden 100% old 100%现象最终不能提供服务之后其他集群节点也陆续出现了此类情况重启无效现象一样很快就from 100% eden 100% old 100% 不能提供服务没办法一直重启直到都启动好了可以正常提供服务。
留了一台进行排查问题执行jmap -histo pid无果加-F也无果后来执行jmap -dump:formatb,fileheap.bin pid 6G堆执行了3-4个小时左右通过MAT分析查看发现都是某个逻辑产生的数据占用了5G左右char[]、String、Map、List等都与某个逻辑代码有关猜测是该问题由于涉及到公司具体业务不方便截图只能大概说明下很容易定位到代码最后是由于并发没有考虑好逻辑写的也有点问题导致的进行修改处理问题解决出了JVM相关问题可以进行排查解决。
可能很多人认为线上出现问题可以排查继续解决问题的人牛逼其实错了真正牛逼的人都是在问题产生前就解决了需要意识里面转变和学习思考提高的地方。
下面看个例子就明白了我觉得放在这里特别合适 春秋战国时期有位神医被尊为“医祖”他就是“扁鹊”。一次魏文王问扁鹊说“你们家兄弟三人都精于医术到底哪一位最好呢”扁鹊答“长兄最好中兄次之我最差。”文王又问“那么为什么你最出名呢”扁鹊答“长兄治病是治病于病情发作之前由于一般人不知道他事先能铲除病因所以他的名气无法传出去中兄治病是治病于病情初起时一般人以为他只能治轻微的小病所以他的名气只及本乡里而我是治病于病情严重之时一般人都看到我在经脉上穿针管放血在皮肤上敷药等大手术所以以为我的医术高明名气因此响遍全国。” 如果能在编码时候就考虑到JVM做到面向JVM编程那就更牛逼了如果能在上线前查阅到此类JVM问题或者是OOM问题以及一些其他问题那也就好了。
综述因此这些成为必不可少的技能所以面试需要了解因为公司可能会面临该问题。
供大于求
现在不像以前了以前会点html都好找工作现在由于学习软件的人越来越多而且每年大学生都在毕业而老一辈的也很少换工作人只会越来越多有个笑话随便在大街上扔硬币砸到的那个可能就是搞软件的现在人员太多公司为了区分会多添加维度每多一个维度可能就会刷掉一批人核心供大于求所以我们也必须朝着这些大的方向努力使得自己的竞争力比别人强。
面试风气
简单的问题都不好意思问怕面试者鄙视面试公司问的问题。现在有一股妖风不管啥公司都慢慢像阿里这样的公司靠近面试不问点jvm、并发、分布式都不好意虽然公司可能没有用到虽然可能仅仅CURD老是觉得问问这些显得逼格高点不管处于什么原因很多公司的确都在学习他们都在问这些问题那么我们就朝着这些大的方向努力也是没错的如果朝着这些方向努力就是他们需要的人才那么也就对了。
类似其他比如高并发 锁、分布式、缓存等都可以考虑考虑这样思考你会有不一样的收获的。