常用JVM参数配置

在java启动脚本的参数配置中经常会看到一些形如:-XX:<+|->name的jvm参数,表示开启或关闭某项特性或属性,+代表开启,-代表关闭,下面介绍一些常用的内存分配配置参数

-XX:name=<n>的选项表示需要带有数字,n即为数字。一些控制属性大小值的数字后面还可以带k/m/g表示KB/MB/GB。其他的数字选项则表示比率或百分比。

-client 指定jvm把应用当成客户端类型程序进行优化,启用该配置后,内存占用是最重要的性能指标,远比高吞吐量重要。

-server 指定jvm使用服务器类型进行优化,该选项适用于高吞吐量比启动时间和内存占用更重要的程序。

-d64 表示加载64位jvm,而不是默认的32位jvm,开启该指令后可以使用更大的内存,64位jvm比32位jvm可以使用更多的内存,但是也会带来一定的性能损耗。这是因为java引用的长度从32位增加到了64位,长度的增加使得缓存行中的容纳的oops变少了,cpu高速缓存的效率也会降低。因此64位jvm上的cpu高速缓存效率的降低就会导致64位jvm的性能比32位jvm降低8%-20%。但是如果要启用64位jvm时,java堆内存最大值不超过32g时可以通过指针压缩来提升性能 -XX:+useCompressedOops

-XX:+userCompressedOops 开启压缩指针特性,oops(Ordinary Object Pointer)是指普通对象指针,jvm内部以它来引用java对象。开启改特性后,会使64位jvm不但有更大的堆,而且还有32为jvm的性能。

-Xms<n>[g|m|k] 配置java堆内存的初始值和最小值,是新生代和老年代的总和,<n>表示尺寸大小,[g|m|k] 表示尺寸的单位,java堆大小永远不会小于该配置值。

-Xmx<n>[g|m|k] 配置java堆内存的最大值,java堆永远不会超过该配置值,如果超过后,系统就会报内存溢出异常。如果-Xmx大于Xms,java堆的大小会根据应用的需要扩展或者缩减,java堆的扩展或缩减需要FullGC,所以一般建议-Xms和-Xmx设置成相同的值。

-XX:NewSize=<n>[g|m|k] 配置java堆内存新生代的初始大小和最小尺寸

-XX:MaxNewSize=<n>[g|m|k] 配置java堆内存新生代的最大尺寸,如果-XX:MaxNewSize大于-XX:NewSize,新生代的大小会根据应用的需求而扩展或缩减,新生代的扩展或缩减需要FullGC,所以一般建议把-XX:MaxNewSize和-XX:NewSize设置成相同的值。下面还有个简单配置可以实现这样的效果

-Xmn<n>[g|m|k]  同时配置新生代的初始值、最小值和最大值,如果希望-XX:MaxNewSize和-XX:NewSize设置成相同的值,可以使用这一行配置即可。

-XX:NewRatio=<n> 配置新生代和老年代的尺寸比。例如:n为3,则比率为1:3,即新生代站新生代和老年代大小总和的1/4。如果java堆扩展或缩减,jvm将根据此比率调整新生代和老年代的大小。

-XX:PermSize=<n>[g|m|k]  配置永久代的初始值和最小值

-XX:MaxPermSize=<n>[g|m|k]  配置永久代的最大内存,如果-XX:MaxPermSize大于-XX:PermSize,永久代的尺寸会随着应用的需要而扩展或缩减,永久代的扩展或缩减也需要进行FllGC,所以一般建议设置成相同值。

-XX:SurvivorRatio=<n> 配置单块Survivor区与Eden区的大小比率,<n>为比率,根据该配置的比率可以计算出Survivor区的内存大小:

survivor size = -Xmn<n>/(-XX:SurvivorRatio=<n>  + 2)

-XX:InitialSurvivorRatio=<n> 配置Survivor区初始比率,应该与Throughput收集器配置使用,这个选项通过在Throughput收集器开启自适应调整尺寸时使用,jvm会自适应调整Survivor区大小使应用可以正常运行。

-XX:TargetSurvivorRatio=<percent> 在进行MinorGC之后,Suivivor区被占用的最大值,该值是Survivor区被占用的百分数,默认为50%。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值