JVM常用调优参数

本文详述了JVM的调优参数,包括-Xms、-Xmx、-verbose:gc、-XX:NewRatio等,解释了它们在内存管理、垃圾回收等方面的作用,帮助优化Java应用性能。
摘要由CSDN通过智能技术生成

目录

一、具体实例

1、-Xms20M

2、-Xmx20M

3、-verbose:gc

4、-Xss128k

5、-Xoss128k

6、-XX:PermSize=10M

7、-XX:MaxPermSize=10M

8、-Xnoclassgc

9、-XX:+TraceClassLoading

10、-XX:+TraceClassUnLoading

11、-XX:NewRatio=4

12、-XX:SurvivorRatio=8

13、-Xmn20M

14、-XX:+HeapDumpOnOutOfMemoryError

15、-XX:+UseG1GC

16、-XX:+PrintGCDetails

17、-XX:+PrintGC

18、-XX:PretenureSizeThreshold=3145728

19、-XX:MaxTenuringThreshold=1

20、-XX:CompileThreshold=1000

21、-XX:+PrintHeapAtGC

22、-XX:+PrintTLAB

23、-XX:+UseSpining

24、-XX:PreBlockSpin

25、-XX:+UseSerialGC

26、-XX:+UseParallelGC

27、-XX:+UseParallelOldGC

28、-XX:+UseConcMarkSweepGC

 29、-XX:MaxGCPauseMillis=100

30、-XX:+UseAdaptiveSizePolicy

二、JVM参数的含义


一、具体实例

1、-Xms20M

表示设置JVM启动内存的最小值为20M,必须以M为单位

2、-Xmx20M

表示设置JVM启动内存的最大值为20M,必须以M为单位。将-Xmx和-Xms设置为一样可以避免JVM内存自动扩展。大的项目-Xmx和-Xms一般都要设置到10G、20G甚至还要高

3、-verbose:gc

表示输出虚拟机中GC的详细情况

4、-Xss128k

表示可以设置虚拟机栈的大小为128k

5、-Xoss128k

表示设置本地方法栈的大小为128k。不过HotSpot并不区分虚拟机栈和本地方法栈,因此对于HotSpot来说这个参数是无效的

6、-XX:PermSize=10M

表示JVM初始分配的永久代(方法区)的容量,必须以M为单位

7、-XX:MaxPermSize=10M

表示JVM允许分配的永久代(方法区)的最大容量,必须以M为单位,大部分情况下这个参数默认为64M

8、-Xnoclassgc

表示关闭JVM对类的垃圾回收

9、-XX:+TraceClassLoading

表示查看类的加载信息

10、-XX:+TraceClassUnLoading

表示查看类的卸载信息

11、-XX:NewRatio=4

表示设置 年轻代(包括Eden和两个Survivor区)/老年代 的大小比值为1:4,这意味着年轻代占整个堆的1/5

12、-XX:SurvivorRatio=8

表示设置2个Survivor区:1个Eden区的大小比值为2:8,这意味着Survivor区占整个年轻代的1/5,这个参数默认为8

13、-Xmn20M

表示设置年轻代的大小为20M

14、-XX:+HeapDumpOnOutOfMemoryError

表示可以让虚拟机在出现内存溢出异常时Dump出当前的堆内存转储快照

15、-XX:+UseG1GC

表示让JVM使用G1垃圾收集器

16、-XX:+PrintGCDetails

表示在控制台上打印出GC具体细节

17、-XX:+PrintGC

表示在控制台上打印出GC信息

18、-XX:PretenureSizeThreshold=3145728

表示对象大于3145728(3M)时直接进入老年代分配,这里只能以字节作为单位

19、-XX:MaxTenuringThreshold=1

表示对象年龄大于1,自动进入老年代,如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象在年轻代的存活时间,增加在年轻代被回收的概率。

20、-XX:CompileThreshold=1000

表示一个方法被调用1000次之后,会被认为是热点代码,并触发即时编译

21、-XX:+PrintHeapAtGC

表示可以看到每次GC前后堆内存布局

22、-XX:+PrintTLAB

表示可以看到TLAB的使用情况

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JVM参数调优是为了提高Java应用程序的性能和稳定性。下面是一些常见的JVM参数调优的思路和建议: 1. 堆内存设置: - -Xms: 初始堆大小,建议与-Xmx相同,避免堆大小的动态调整。 - -Xmx: 最大堆大小,根据应用程序的需求进行设置,避免频繁的垃圾回收。 2. 垃圾回收器选择: - -XX:+UseParallelGC: 使用并行垃圾回收器,适合多核CPU和高吞吐量应用。 - -XX:+UseConcMarkSweepGC: 使用CMS垃圾回收器,适合响应时间优先的应用。 - -XX:+UseG1GC: 使用G1垃圾回收器,适合大内存应用和低延迟要求。 3. 垃圾回收参数调优: - -XX:NewRatio: 设置新生代和老年代的比例,默认为2,可以根据应用程序的对象生命周期进行调整。 - -XX:SurvivorRatio: 设置Eden区和Survivor区的比例,默认为8,可以根据对象的存活率进行调整。 - -XX:MaxTenuringThreshold: 设置对象进入老年代的年龄阈值,默认为15,可以根据对象的存活率和内存情况进行调整。 4. 线程相关参数: - -Xss: 设置线程栈的大小,默认为1M,可以根据应用程序的线程数量进行调整。 - -XX:ParallelGCThreads: 并行垃圾回收的线程数量,默认为CPU核心数的1/8,可以根据CPU和内存情况进行调整。 5. 其他常用参数: - -XX:+UseCompressedOops: 使用压缩指针,可以减少对象引用的内存消耗。 - -XX:+DisableExplicitGC: 禁用显示调用System.gc()方法,避免不必要的垃圾回收。 以上是一些常见的JVM参数调优策略,具体的调优效果和最佳参数设置还需要根据应用程序的实际情况进行测试和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值