源代码做网站,手机制作视频软件app,wordpress 关闭功能,刚察网站建设公司一般Java面试的时候#xff0c;面试官都喜欢问一个面试题#xff0c;就是JVM调优的面试题#xff0c;相信超过99%的小伙伴都没有过JVM调优的经历。说实话#xff0c;我以前也没有相关的调优经验#xff0c;也非常喜欢百度#xff0c;这个问题到底想问什么#xff0c;应该…一般Java面试的时候面试官都喜欢问一个面试题就是JVM调优的面试题相信超过99%的小伙伴都没有过JVM调优的经历。说实话我以前也没有相关的调优经验也非常喜欢百度这个问题到底想问什么应该怎么回答结果看到了一个非常有意思的回答。
答案
1、我一般面试的时候调优顽皮
2、我他妈直接ZGC调个蛇皮
说实话Java到了需要做jvm调优的时候那说明这个系统是一个面向高并发系统并且用户量绝对不在少数并且会追求一个低延迟的一个场景。例如淘宝、京东、各类秒杀活动那么这个时候存在jvm调优的情况有几个在阿里上班的。 那么何时调优呢该怎么调优呢我认为这个没有一个标准答案要不然我之前也不会经常百度了。
我们先了解一下JVM这个玩意基本上是开箱即用不需要你调优他也能跑的很好你确定你比设计这个JVM的人更加专业吗还调优调个蛇皮吧当你需要调优的时候基本上是你的代码写出问题啦导致线上频繁ygcfullgc。这个就没有办法了ygc跟架构存在一定关系fullgc就自个区反省吧。
我们在进阶了解一下怎么调优能动的几个参数最小内存和最大内存这个跟JVM是息息相关的如果小了就会导致频繁ygc并且容易导致对象晋升到老年代并且触发fullgc这个fullgc的危害是非常大的会导致整个业务暂停。那么这个时候就有同学把这个内存直接调大恭喜你踩吭了大内存确实可以避免频繁ygc但是当你触发fullgc的时候哼哼直接炸裂业务停顿时间贼长你们经理估计要宰了你。
除了能动内存之外我们还有一个选择那就是垃圾回收器各版本的JDK使用的垃圾回收器各不一样使用的默认的垃圾回收器也不一样然后你们可以了解一下每一种垃圾回收器的特点
Java虚拟机JVM提供了多种垃圾回收器Garbage Collectors用于自动管理内存回收不再使用的对象。以下是一些常见的垃圾回收器及其特点 Serial GC串行垃圾回收器 单线程回收器使用单个线程进行垃圾回收。适用于单核CPU和小内存应用场景。在进行垃圾回收时会暂停应用程序的其他线程导致应用程序的停顿时间较长。适用于对延迟要求不高的场景如桌面应用程序。 Parallel GC并行垃圾回收器 多线程回收器使用多个线程进行垃圾回收。适用于多核CPU和大内存应用场景。在进行垃圾回收时会暂停应用程序的其他线程但由于使用了多线程停顿时间相对较短。适用于对延迟要求不高的场景如服务器应用程序。 CMSConcurrent Mark Sweep垃圾回收器 并发回收器尽量减少应用程序的停顿时间。使用多线程进行垃圾回收与应用程序线程并发执行。在进行垃圾回收时会标记需要回收的对象然后在适当的时机进行清理。适用于对延迟要求较高的场景如低延迟交易系统。需要注意的是CMS回收器在清理过程中可能会产生大量碎片可能导致内存碎片化问题。 G1Garbage-First垃圾回收器 并行回收器尽量减少应用程序的停顿时间。将堆内存划分为多个独立的区域Region并根据区域的使用情况进行垃圾回收。在进行垃圾回收时会优先回收垃圾最多的区域以减少停顿时间。适用于大内存、多核CPU的应用场景如大型数据处理系统。可以通过调整参数来控制停顿时间和吞吐量。
这下你们知道该怎么回答这个面试题了吗