常用的JVM调优参数和应用场景

常见的JVM调优参数和应用场景

   概要 

   JVM调优可以显著提升Java应用性能,减少响应时间和垃圾回收停顿,优化内存使用,降低内存溢出风险,并提高资源利用率。

   以下是一些常用的JVM参数和应用场景的介绍。

   一、堆内存设置

   -Xms<size> 和 -Xmx<size>:设置初始堆大小和最大堆大小。

   1.  -Xms<size>

   初始化时的堆大小。设置得大一些可以避免频繁动态扩展堆。

   2. -Xmx<size>

   设置堆内存的最大值。设置的太小可能导致 OutOfMemoryError,设置的太大可能导致 GC 时间过长。

   示例:-Xms512m -Xmx4g

   这表示堆的初始大小为 512 MB,最大可以扩展到 4 GB。

   二、新生代和老年代设置

   1. -Xmn<size>

   设置新生代大小。通常建议新生代占总堆的1/3,这样可以提高新生代GC的效率。

   示例:-Xmn1g,表示新生代大小为1 GB。

   2. -XX:NewRatio=<ratio>

   设置新生代和老年代的比例。这个比例决定了JVM在堆内存中为新生代和老年代分配的内存大小。

   示例:

   -XX:NewRatio=2:表示新生代与老年代的比例为1:2(新生代占总堆内存的1/3)。

   -XX:NewRatio=4:表示新生代与老年代的比例为1:4(新生代占总堆内存的1/5),适合对象存活时间较长的场景。

   三、垃圾回收相关参数

   1.  -XX:+UseParallelGC

   用于选择适合应用场景的垃圾收集器。

   使用 Parallel GC(并行垃圾收集器),这是 JDK 1.8 的默认垃圾收集器,适合高吞吐量应用。

   使用其他垃圾收集器,示例:

   -XX:+UseSerialGC:使用串行垃圾回收器。

   -XX:+UseG1GC:使用G1垃圾回收器。

   2. -XX:MaxGCPauseMillis=<time>

   设置GC最大暂停时间。帮助控制应用的响应时间。

   示例:-XX:MaxGCPauseMillis=200,GC最大暂停时间为200毫秒。

   注意:

   默认情况下,VM没有暂停时间目标值。GC的暂停时间主要取决于堆中实时数据的数量与实时数据量。

   该参数应谨慎使用。太小的值将导致系统花费过多的时间进行垃圾回收。原因是为满足最大暂停时间,VM将设置更小的堆,以存储相对少量的对象,来提升回收速率,会导致更高频率的GC。

   3. -XX:GCTimeRatio=<ratio>

   设置垃圾回收占总运行时间的比例。表示希望在GC花费不超过应用程序执行时间的1/(1+<ratio>),<ratio>为大于0小于100的整数。

   默认值是99,表示允许1%的时间用于GC,适合希望优化吞吐量的场景。

   示例:-XX:GCTimeRatio=19

   那么GC最大花费时间的比率=1/(1+19)=5%,程序每运行100分钟,允许GC停顿共5分钟,其吞吐量=1-GC最大花费时间比率=95% 

   4. -XX:MaxTenuringThreshold=<value>

   设置对象从新生代晋升到老年代的年龄阈值。适合调节对象的存活时间,影响GC频率和性能。

   示例:-XX:MaxTenuringThreshold=15,表示对象在新生代存活15次后才会晋升到老年代。

   四、线程栈大小

   -Xss<size>

   设置每个线程的栈大小。栈用于存储方法的局部变量、操作数栈、动态链接和返回地址。较大的栈大小可以支持更深的递归,但会消耗更多的内存。

   示例2:-Xss512k

   这表示每个线程的栈大小为512 KB。适用于大多数应用,但如果应用涉及较深的递归,可能需要更大的栈。

   五、调试和监控参数

   1. -XX:+PrintGCDetails

   这个收集器日志参数,告诉虚拟机在发生垃圾收集行为时打印内存回收日志,并且在进程退出的时候输出当前的内存各区域分配情况。

   打印详细的GC信息,帮助开发者分析内存使用情况。

   2. -XX:+PrintGCTimeStamps

   在GC日志中添加时间戳,方便分析GC发生的具体时间。

   3. -XX:+HeapDumpOnOutOfMemoryError

   在发生内存溢出时生成堆转储文件,便于后续分析内存泄漏或不足的问题。

   4. -Xloggc:<file>:

   将GC日志输出到指定文件,便于后续分析和监控。

posted @ 2024-09-23 11:40  欢乐豆123  阅读(17)  评论(0编辑  收藏  举报