发新帖
开启左侧

口试官问我JVM调优,我真的是

[复制链接]
380 0

一键注册,加入手机圈

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
口试官明天要不来聊聊JVM调优相关的吧?
口试官你已经在消耗情况下有过调优JVM的履历吗?
候选者 :没有
口试官 :…
候选者 :嗯…是这样的,我们一般优化系统的思绪是这样的
候选者 :1. 一般来说关系型数据库是先到瓶颈,首先排查能否为数据库的题目
候选者 :(这个进程中就需要评价本人建的索引能否公道、能否需要引入散布式缓存、能否需要分库分表等等)
候选者 :2. 然后,我们会斟酌能否需要扩容(横向和纵向城市斟酌)
候选者 :(这个进程中我们会狐疑是系统的压力过大大概是系统的硬件才能不敷致使系统频仍显现题目)
候选者 :3. 接着,利用代码层面上排查并优化
候选者 :(扩容是不能无尽头的,里头里外都是钱阿。这个进程中我们会审阅本人写的代码能否存在资本浪费的题目,又大概是在逻辑上可存在优化的地方,比如说经过并行的方式处置某些哀告)
候选者 :4. 再接着,JVM层面上排查并优化
候选者 :(审阅完代码以后,这个进程我们不雅观察JVM能否存在屡次GC题目等等)
候选者 :5. 最初,收集和操纵系统层面排查
候选者 :(这个进程检察内存/CPU/收集/硬盘读写目标能否一般等等)

口试官问我JVM调优,我真的是-1.jpg
候选者 :绝大大都情况下,到第三步就终了了,一般经过「运维团队」给我们设备的JVM和机械上的参数,已经满足绝大大都的需求了。
候选者 :之前有过其他团队在「大促」发现接口处置超时的题目,那时辰查各类监控狐疑是FULL GC致使的
候选者 :第一想法不是说去调理各类JVM参数来停止优化,而是间接加机械
候选者 :(用最粗鲁的方式,处置题目是最简单的,扩容YYDS)
口试官 :确切
候选者 :不外,我是学过JVM相关的调优号令和思绪的。
候选者 :在我的了解下,调优JVM实在就是在「了解」JVM内存机关以及各类渣滓汇集器条件下,连系本人的现有的营业来「调剂参数」,使本人的利用可以一般稳定运转。
候选者 :一般调优JVM我们以为会有几种目标可以参考:『吞吐量』、『搁浅时候』和『渣滓接管频次』
候选者 :基于这些目标,我们就有能够需要调剂:
候选者 :1. 内存地区巨细以及相关战略(比如整块堆内存占几多、更生代占几多、老年月占几多、Survivor占几多、提升老年月的条件等等)
候选者 :比如(-Xmx:设备堆的最大值、-Xms:设备堆的初始值、-Xmn:暗示年轻代的巨细、-XX:SurvivorRatio:伊甸区和幸存区的比例等等)
候选者 :(按履历来说:IO麋集型的可以稍微把「年轻代」空间加大些,由于大大都工具都是在年轻代就会衰亡。内存计较麋集型的可以稍微把「老年月」空间加大些,工具存活时候会更长些)
候选者 :2. 渣滓接管器(挑选适宜的渣滓接管器,以及各个渣滓接管器的各类调优参数)
候选者 :比如(-XX:+UseG1GC:指定 JVM 利用的渣滓接管器为 G1、-XX:MaxGCPauseMillis:设备目标搁浅时候、-XX:InitiatingHeapOccupancyPercent:当全部堆内存利用到达必定比例,全局并发标识表记标帜阶段 就会被启动等等)
候选者 :没错,这些都是因地制宜,具体题目具体分析(条件是得懂JVM的各类根抵常识,根抵常识都不懂,谈何调优)
候选者 :在大大都场景下,JVM 已经可以到达「开箱即用」

口试官问我JVM调优,我真的是-2.jpg
口试官 :确切
候选者 :一般我们是「碰到题目」以后才停止调优的,而碰到题目后需要操纵各类的「工具」停止排查
候选者 :1. 经过jps号令检察Java进程「根抵」信息(进程号、主类)。这个号令很常用的就是用来看当前效力器有几多Java进程在运转,它们的进程号和加载主类是啥
候选者 :2. 经过jstat号令检察Java进程「统计类」相关的信息(类加载、编译相关信息统计,各个内存地区GC概况和统计)。这个号令很常用于看GC的情况
候选者 :3. 经过jinfo号令来检察和调剂Java进程的「运转参数」。
候选者 :4. 经过jmap号令来检察Java进程的「内存信息」。这个号令很常用于把JVM内存信息dump到文件,然后再用MAT( Memory Analyzer tool 内存剖析工具)把文件停止分析
候选者 :5. 经过jstack号令来检察JVM「线程信息」。这个号令用常用语排查死锁相关的题目
候选者 :6. 还有近期比力热门的Arthas(阿里开源的诊断工具),涵盖了上面很多号令的功用且自带图形化界面。这也是我这边常用的排查和分析工具

口试官问我JVM调优,我真的是-3.jpg
口试官 :嗯…好吧。之前聊JVM的时辰,你也提到过在「诠释」阶段,会有两种方式把字节码信息诠释成机械指令码,一个是字节码诠释器、一个是立即编译器(JIT)
口试官我想问问,你了解JVM的JIT优化技术嘛?
候选者 :JIT优化技术比力著名的有两种:方式内联和逃逸分析
候选者 :所谓方式内联就是把「目标方式」的代码复制到「挪用的方式」中,避免发生实在的方式挪用
候选者 :由于每次方式挪用城市天生栈帧(压栈出栈记录方式挪用位置等等)会带来必定的性能消耗,所以「方式内联」的优化可以进步必定的性能
候选者 :在JVM中也有相关的参数赐与我们指定(-XX:MaxFreqInlineSize、-XX:MaxInlineSize)
候选者 :而「逃逸分析」则是判定一个工具能否被内部方式援用或内部线程拜候的分析技术,假如「没有被援用」,就可以对其停止优化,比如说:
候选者 :1. 锁消除(同步疏忽):该工具只在方式内部被拜候,不会被此外地方援用,那末就必定是线程安好的,可以把锁相关的代码给疏忽掉
候选者 :2. 栈上分派:该工具只会在方式内部被拜候,间接将工具分派在「栈」中(Java默许是将工具分派在「堆」中,是需要经过JVM渣滓接管期停止接管,需要消耗必定的性能,而栈内分派则快很多)
候选者 :3. 标量交换/分袂工具:当法式真正履行的时辰可以不建立这个工具,而间接建立它的成员变量来取代。将工具拆分后,可以分派工具的成员变量在栈或寄存器上,原本的工具就无需分派内存空间了

口试官问我JVM调优,我真的是-4.jpg
候选者 :不外扯了这么多,分歧的JVM版本对JIT的优化都不太不异(:这里也只能算是一个参考
口试官 :懂了。
【大厂口试常识点】、【 简历模板 】、【原创文章】电子书,共有1263页
我把这些 上传到网盘 ,你们有需要间接下载就行了。做到这份上了, 不会还想白嫖吧点赞转发 又不用钱。

口试官问我JVM调优,我真的是-5.jpg
说明:本文限于篇幅,故而只展现部分的文档截图,无缺的 Java口试进修文档小编已经帮你整理好了,有需要的朋友点赞+关注我后,点击此处支付JVM、Java、大厂口试进修材料哦
分享不易,感激大师的阅读!

-----------------------------
奶奶的个雄
您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

更多

客服中心

400-800-8888 周一至周日8:30-20:30 仅收市话费

QQ|Archiver|手机版|小黑屋|爱锋贝 ( 粤ICP备16041312号|网站地图

GMT+8, 2024-5-19 08:40

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表