JVM常用参数配置、详解、优化



-Xms设置堆的最小空间大小 。

设置堆的初始大小(以字节为单位)。此值必须是1024的倍数且大于1 MB。追加字母k或K表示千字节,m或M表示兆字节,g或G千兆字节。
通常是物理内存的1/64。
示例:

在这里插入图片描述

-Xmx设置堆的最大空间大小 。

指定内存分配池的最大大小(以字节为单位)。此值必须是1024的倍数且大于2 MB。追加字母k或K表示千字节,m或M表示兆字节,g或G千兆字节。默认值是在运行时根据系统配置选择的。对于服务器部署,-Xmx与-Xms经常设置为相同的值(原因:不相同的话JVM将使用初始堆大小开始,然后增长Java堆,直到找到堆使用率和性能之间的平衡为止)。
通常是物理内存的1/4。
示例:
在这里插入图片描述
最大堆内存与最小堆内存的动态拓展:
当空余堆内存小于40%时,jvm就会增大堆内存,直到达到-Xmx最大的限制;当空余内存大于70%时,就会减小内存直到达到-Xms最小限制。

-Xmn:设置年轻代大小。

堆的年轻代区域用于新对象。与在其他区域相比,在该区域执行GC的频率更高。如果年轻一代的大小太小,则会执行许多次要的垃圾回收。如果大小太大,那么将仅执行完整的垃圾收集
建议将年轻代的大小保持在整个堆大小的一半到四分之一之间
示例:
在这里插入图片描述

-XX:MetaspaceSize

设置分配的类元数据空间的大小,该类元数据空间将在首次超过垃圾收集时触发垃圾收集。垃圾收集的阈值取决于使用的元数据量而增加或减少
对于64位JVM来说,元空间的默认初始大小是20.75MB,默认的元空间的最大值是无限,axMetaspaceSize用于设置metaspace区域的最大值,这个值可以通过mxbean中的MemoryPoolBean获取到,如果这个参数没有设置,那么就是通过mxbean拿到的最大值是-1,表示无穷大。由于调整元空间的大小需要Full GC,这是非常昂贵的操作,如果应用在启动的时候发生大量Full GC,通常都是由于永久代或元空间发生了大小调整,基于这种情况,一般建议在JVM参数中将MetaspaceSize和MaxMetaspaceSize设置成一样的值,并设置得比初始值要大。

-Xss=线程堆栈大小

设置每个线程的堆栈大小(等效于-XX:ThreadStackSize。)。
示例:
在这里插入图片描述

-XX:NewSize(等效于-Xmn)

设置新生代最小空间大小。

-XX:MaxNewSize

设置新生代空间大小。

-XX:PermSize

设置分配给永久生成的空间(以字节为单位),如果超出该空间则触发垃圾回收。此选项在JDK 8中已弃用,并已由该-XX:MetaspaceSize选项取代。
默认是物理内存的1/64

-XX:MaxPermSize

设置最大永久生成空间大小(以字节为单位)。此选项在JDK 8中已弃用,并已被-XX:MaxMetaspaceSize选项取代。
默认是物理内存的1/4

不常用拓展

-XX:+UseParallelGC

选择垃圾收集器为并行收集器。此配置仅对年轻代有效。即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集。

-XX:ConcGCThreads = 线程

配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。

-XX:+ ScavengeBeforeFullGC

在每个完整GC之前启用年轻一代的GC,默认情况下启用此选项,在完整GC之前清除年轻一代可以减少从老一代空间到年轻一代空间可访问的对象数量。要在每个完整GC之前禁用年轻一代的GC。
-XX:SurvivorRatio = 比率 设置伊甸园空间大小与幸存者空间大小之间的比率。默认情况下,此选项设置为8。示例如何将eden / survivor空间比率设置为4:
在这里插入图片描述

-XX:+ UseG1GC

启用垃圾优先(G1)垃圾收集器的使用。它是服务器类型的垃圾收集器,适用于具有大量RAM的多处理器计算机。它有很大可能满足GC暂停时间目标,同时保持良好的吞吐量。建议将G1收集器用于需要大堆(大小约为6 GB或更大)且GC延迟要求有限(稳定且可预测的暂停时间低于0.5秒)的应用程序。

查看启动时垃圾清除日志

打印运行时gc简要信息参数配置:
-XX:+PrintGC
-verbose:gc

GC参数配置后打印的格式为:
[GC (Metadata GC Threshold) 412956K->75248K(728576K), 0.0206778 secs]
[Full GC (Metadata GC Threshold) 75248K->37399K(685568K), 0.0559776 secs]
[触发的GC类型 回收前为->回收后(java对象可使用的空间量),回收所用时间]
除了在垃圾回收期间,在任何时候仅将使用一个survivor空间来存储对象

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值