码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 你好,面试官 | 终于上岸了,你会哪些 JVM 调优参数?呆住了。。。


    本期是【你好,面试官】系列文章的第19期,持续更新中…。

    《你好,面试官》系列目前已经连载19篇了,据说看了这个系列的朋友都拿到了大厂offer~

    • 你好,面试官 | 你真的理解面向 “对象”?
    • 你好,面试官 | 我用Java List 狂怼面试官~
    • 你好,面试官 | 你拿Java Map考验老干部?
    • 你好,面试官 | 你觉得MySQL自增主键连续吗?
    • 你好,面试官 | 呵,我怎么可能不知道索引!
    • 你好,面试官 | 我不仅知道MySQL索引,还会优化呢~
    • 你好,面试官 | 我可以凭借MySQL架构体系,事务锁机制原理进你公司吗?
    • 你好,面试官 | 初识 Java 并发,拿捏这些业务可能遇到的问题~
    • 你好,面试官 | 百度是这样问 synchronized 的…
    • 你好,面试官 | Redis不只是做缓存,你看过Redis数据结构底层实现吗?
    • 你好,面试官 | 分析一下SQL执行慢的原因?如何排查,优化思路?(加餐篇)
    • 你好,面试官 | MySQL事务与锁机制相关(加餐篇)
    • 你好,面试官 | 不会点JVM的骚操作,还镇不住面试官了嗦!
    • 你好,面试官 |阿里二面,一条SQL更新的底层回答让我逼格拉满!
    • 你好,面试官 | 阿里云二面,Redis经典使用场景与雪崩处理(我猜你根本没考虑到这个…)?
    • 你好,面试官 | 面完腾讯,没想到操作系统会考这么多…
    • 欢迎星标+订阅,持续更新中。。。致力打造校招核心面试攻略~

    小龙有话说

    本期会模拟面试 关于 JVM调优参数 大厂面试部分常考问题

    涉及知识点,堆、栈、收集器等

    本期题改编自 ——2023届 腾讯 二面

    面试现场

    叮叮叮…

    面试官:“你好,我是XX面试官,请问是小龙吗?”

    小龙:“您好,面试官,我是小龙”

    面试官:“好的,现在有空吗,我们开始面试吧”

    小龙:“嗯嗯,准备好啦”

    …

    other questions

    …

    面试官:“我看你简历有写悉 JVM 原理对吧?”

    小龙:“嗯嗯,有过学习了解”

    面试官:“好的,给我讲讲 你了解哪些 JVM参数吧,或者说你平时经常用到哪些调优参数呢?”

    独白:”上来就玩变态的吗?“

    小龙:“JVM各个模块 比如:堆、元空间、栈、各个收集器、或者GC策略等都可以通过对应的命令来进行配置。”

    面试官:“对于堆你平时主要用的有哪些呢?”

    小龙:“如果说用的比较多的,可能就是 -Xms 用来设置堆初始大小,-Xmx 设置最大堆大小。”

    面试官:“用这两个参数时有什么讲究吗?”

    小龙:“嗯?设置的值大小可能要看具体项目吧,不过通常服务器项目在运行过程中,堆空间会随着项目的运行不断地收缩与扩张,这也无疑会造成不必要的系统压力。因此,在生产环境 这两个参数尽量保持一致,避免 GC 调整堆大小带来其他开销。”

    面试官:“好的,不错。你继续”

    小龙:“还有其他什么 -Xmn 设置新生代的大小 ,-XX:NewRatio 设置年轻代和年老代的比值等。不过,能常用且有用的还是这几个。”

    小龙:“平时在查看项目 GC 情况,或者排查问题时,我们可以 -XX:+PrintGCDetails 查看详细的GC处理日志。”

    小龙:"并且堆内存是非常重要的,而且堆内存也容易发生一些内存异常比如:OOM,因此这个命令几乎是项目必备啦,可以用 -XX:+HeapDumpOnOutOfMemoryError在出现异常时输出堆内信息,要配合 -XX:+HeapDumpPath 使用,指定输出路径 "

    小龙:" 这几个命令 一般需要合起来使用: -Xms5M -Xmx5M -Xmn1M -XX:SurvivorRatio=8 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/softs/web/logs/gc.hprof" (如果实习过应该基本都知道)

    面试官:“好的,不错,还知道哪些其他命令呢?”

    小龙:“嗯,还有其他经常用的 利用-Xss 设置栈大小,如果不设置此参数,默认值是1M 。”

    小龙:“如果是高手,还可以利用 收集器 或者 GC 相关的命令进行调优,不过这些我也只是了解,并没亲自尝试过。可以讲讲。”

    独白:“细节拉满,这种高级 涉及到了调优 收集器之类的,还是不要装逼啦。。。我没用过,但是我可以都略懂。”

    独白:“其他相关知识点在【面试笔记】中都有详细总结,清晰易懂全面。”

    小龙:“对于 CMS垃圾收集器 可以用 -XX:+UseConcMarkSweepGC 开启,因为CMS会有浮动垃圾,所以一般都较早启动GC,因此我们可以用-XX:CMSInitiatingOccupancyFraction=n 设定CMS在对内存占用率达到n%(自己指定)的时候提前开始GC。”

    小龙:“如果 对于 G1垃圾收集器,可以用 -XX:+UseG1GC 开启,因为G1将堆空间划分为若干个区域(Region),各个region可以是Eden区,Survivor区以及Old区等,我们可以 用 -XX:G1HeapRegionSize 设置每个region的大小。”

    小龙:“并且 G1 GC 不仅是区域化的,也是并行-并发,因此,可以利用-XX:ParallelGCThread 设置STW的时候并行的垃圾线程数量,-XX:ParallelGCThread 设置STW的时候并行的垃圾线程数量。”

    面试官:“这些都需要我们自己去设置吗?”

    小龙:“通常使用G1收集器,不需要那么多的参数配置,G1设计原则本就是简化 JVM性能调优。我们一般 1、开启 G1 收集器,2、设置堆最大内存,3、再设置它的最大停顿时间 即可,其他的参数,G1会自动调节或使用默认的参数。”

    面试官:“enen,那,这个停顿时间是怎么回事呢?如何设置呢?”

    独白:“NB,脑壳已经转不动了。。”

    小龙:" G1 收集器,我们可以通过 -XX:MaxGCPauseMillis 设置一个时间(JVM会尽力实现,但不保证)期望可以达到的最大GC停顿时间,默认是200ms。"

    小龙: 这个参数如果设置的过小,会导致一次回收的region个数减少,回收的垃圾对象减少(因为设置的垃圾线程工作的时间减少了),如果产生垃圾的速度很快,可能会导致Full GC,因此这个参数很关键。

    面试官:“好的,基础还行。时间差不多啦,今天暂时聊那么多,下期再谈谈。”

    知识总结

    本期我们通过面试模拟 列出了大厂面试我遇到过的 JVM 相关常考问题,下期再见。订阅+星标持续追更

    面试重点

    堆、栈、收集器等

  • 相关阅读:
    js---es5和es6实现面对对象继承
    面向对象(JAVA)
    企业实施ERP系统遇到的问题及应对措施
    【JavaScript面试】网页轮播图的制作
    【ARC104F】Visibility Sequence(区间DP)
    Qt时间和定时器
    第57节——切片
    树莓派——舵机
    数据挖掘实验(二)数据预处理【等深分箱与等宽分箱】
    解决Visual studio 未能正确加载...包问题
  • 原文地址:https://blog.csdn.net/qq_43666365/article/details/127718633
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号