原因如下:
1、常规的调优手段,都是从升级jdk版本、调整jvm参数、调整jvm垃圾回收器的角度,进行调优的。
2、jvm的垃圾收集器,都是有gc停顿(stop the world),gc停顿的意思是,在它进行,垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。这项工作实际上是由虚拟机在后台自动发起和自动完成的,在用户不可见的情况下把用户正常工作的线程全部停掉,这对很多应用来说,都是难以接受的,从JDK1.3开始,一直到现在的最新的JDK1.7,HotSpot虚拟机开发团队为消除或者减少工作线程因内存回收而导致停顿的努力一直在进行着,从Serial收集器到Parallel收集器,再到Concurrent Mark Sweep(CMS)乃至GC收集器的最前沿成果Garbage First(G1)收集器,我们看到了一个个越来越优秀(也越来越复杂)的收集器的出现,用户线程的停顿时间在不停的缩短,但是仍然没有办法完全消除(这里暂不包括RTSJ中的收集器)。寻找更优秀的垃圾收集器的工作仍在继续!
因为有了GC停顿时间,导致用户线程出现停顿,进而影响系统性能(延迟、吞吐量),影响用户使用体验。
因此需要进行jvm的垃圾收集器的调优。不同的垃圾收集器对GC停顿时间或其他做了不同处理和优化,有各自的原理、使用场景、优缺点。正因为有不同的使用场景,才通过jvm的垃圾收集器的替换设置,才能满足系统的性能(延迟和吞吐量)要求,才能给用户良好体验。
页面问题(页面优化)->jvm参数调整和jvm垃圾回收器替换设置->jvm的垃圾收集器的使用场景、优缺点
GC停顿其他说法:
1、JVM的Stop The World(STW)确实指的是GC停顿,即暂停所有用户线程。这种停顿的发生是因为只有暂停所有用户线程,才能保证系统不会产生新的垃圾,在GC标记回收对象时,可以保证对象的有效性,否则会产生错标和漏洞。STW是任何一种GC算法中都会发生的现象,可以理解为JVM GC在清理内存时,整个程序的停顿时间。当STW发生时,除GC所需的线程外,所有的线程都进入等待状态,直到GC任务完成。每一代的Java垃圾回收器,都把缩减STW停顿时间作为很重要的目标
2、GC停顿(Stop The World,简称STW)是指在垃圾收集(GC)过程中,系统暂停所有用户线程的过程。这种停顿的目的是为了保证在垃圾标记和回收对象时,系统不会产生新的垃圾,从而确保对象的有效性,避免错标和漏洞的产生。GC任务的核心是识别和回收垃圾对象,进行内存清理。为了使GC能够高效执行,系统会进入一个停顿的状态,即暂停所有应用线程。这种停顿状态保证了系统状态在某一瞬间的一致性,有利于更好地标记垃圾对象。因此,在GC时,都会产生应用程序的停顿,而减少GC停顿可以减少程序的停顿时间,提高系统的性能
如何根据具体应用特性进行调优。以下是一些调优的通用策略:
- 选择合适的垃圾收集器根据应用的需求(如响应时间要求、吞吐量要求等)和资源限制(如CPU、内存大小等),选择最适合的垃圾收集器。
- 堆大小调整适当地调整堆大小可以平衡GC的频率和停顿时间。一般而言,增大堆大小会减少GC的频率,但可能增加GC的停顿时间。
- 监控和分析GC日志通过开启GC日志,可以获得垃圾收集的详细信息,如各阶段的耗时、回收量等。分析这些数据可以帮助识别性能瓶颈和调优方向。
- 细化GC参数设置
JVM提供了丰富的GC相关参数,通过调整这些参数(如新生代与老年代的比例、触发Full GC的阈值等),可以微调垃圾收集的行为,优化性能。
深入理解JVM的垃圾收集机制和各种垃圾收集器的特点是进行有效性能调优的前提。通过选择合适的垃圾收集器并适当调优,可以显著提升Java应用的性能,满足不同场景下对响应时间和吞吐量的需求。记住,没有一劳永逸的解决方案,性能优化是一个持续的过程,需要不断地监控、评估和调整。
JVM性能调优的6大步骤,及关键调优参数详解 – mikechenJVM性能调优是一个非常重要的技能,大厂也特爱问,属于高薪必备技能@mikechen JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 1.Full GC …https://mikechen.cc/3321.htmlhttps://blog.csdn.net/weixin_44704538/article/details/108222022JVM性能调优的6大步骤,及关键调优参数详解 – mikechenJVM性能调优是一个非常重要的技能,大厂也特爱问,属于高薪必备技能@mikechen JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 1.Full GC …
https://mikechen.cc/3321.html
参考资料:
jvm垃圾回收GC调优基础原理分析_java_脚本之家谈到调优,这一定是针对特定场景、特定目的的事情, 对于 GC 调优来说,首先就需要清楚调优的目标是什么?从性能的角度看,通常关注三个方面,内存占用(footprint)、延时(latency)和吞吐量(throughput)https://www.jb51.net/article/235813.htmJava JVM调优秘籍:让垃圾回收不再是“垃圾”!-腾讯云开发者社区-腾讯云在Java的世界里,JVM(Java虚拟机)是每个开发者的幕后英雄。它不仅负责运行Java程序,还默默地处理内存管理、垃圾回收等核心任务。但是,你知道吗?通过精心调优JVM,我们可以让它的性能发挥到极致,让应用程序运行得更加流畅和高效。本文将带你深入了解JVM调优的奥秘,让你的Java应用飞起来!
https://cloud.tencent.com/developer/article/2395226百度安全验证
https://baijiahao.baidu.com/s?id=1762713586517783757&wfr=spider&for=pc什么场景需要jvm调优-电子发烧友网JVM调优是指对Java虚拟机进行性能优化和资源管理,以提高应用程序的运行效率和吞吐量。JVM调优的场景有很多,下面将详细介绍各种不同的场景。 高并发场景:在高并发场景下,系统需要处理大量的并发请求,如果JVM的性能不够优越,可能会导致应用程序的性能下降甚至崩溃。此时需要对JVM进行调优,以提高应用程序的并发处理能力。例如,调整线程池的大小、调整垃圾收集器的策略等。 内存占用过高:如果应用程序的内存占用过高,可能会导致系统
https://www.elecfans.com/d/2331461.html
https://zhuanlan.zhihu.com/p/687452382https://zhuanlan.zhihu.com/p/687452382百度安全验证
https://baijiahao.baidu.com/s?id=1795469828559150813&wfr=spider&for=pchttps://zhuanlan.zhihu.com/p/54840395
https://zhuanlan.zhihu.com/p/54840395