Java JVM常见的配置参数说明

JVM常用参数

-Xms                                            初始堆内存大小,默认物理内存64/1

                                                     -Xms = -XX:InitialHeapSize

-Xmx                                            最大堆内存,默认物理内存4/1

                                                     -Xmx = -XX:MaxHeapSize

-Xss                                              栈内存大小, 设置单个线程栈大小,一般默认512~1024kb。

                                                     单个线程栈大小跟操作系统和JDK版本都有关系   -Xss = -XX:ThreadStackSize

-Xmn                                            年轻代大小

-XX:MetaspaceSize                     元空间大小,元空间本质跟永久代类似,都是对JVM规范中方法区的实现。

                                                    不过元空间与永久代最大的区别在于:元空间并不在虚拟机中,而是使用本机内存。

                                                    因此,元空间大小仅受本地内存限制。

-XX:MaxMetaspaceSize             最大元空间大小。

-XX:+PrintGCDetails                   打印GC详细日志信息

-XX:SurvivorRatio                       幸存者比例设置

-XX:NewRatio                            新生代比例设置

-XX:MaxTenuringThreshold        进入老年代阈值设置

JDK1.8之前前版本设置

-XX:PermSize                             持久代(方法区)的初始内存大小。(例如:-XX:PermSize=64m)

-XX:MaxPermSize                      持久代(方法区)的最大内存大小。(例如:-XX:MaxPermSize=512m)

 

JVM参数配置指南

参数配置示例: 

-XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -Xms256m -Xmx256m

文章看下来上面这段配置的意思很简单,设置元空间的初始值和最大值,设置堆空间的初始值和最大值。

为什么MetaspaceSize要设置为128M?为什么堆内存初始值Xms设置为256M而不是512M?

按照Java官方的指导
在这里插入图片描述

  • Java堆大小设置,Xms 和 Xmx设置为老年代存活对象的3-4倍,即FullGC之后的老年代内存占用的3-4倍
  • MaxPermSize(元空间)设置为老年代存活对象的1.2-1.5倍。
  • 年轻代Xmn的设置为老年代存活对象的1-1.5倍。
  • 老年代的内存大小设置为老年代存活对象的2-3倍。

可以让系统运行一段时间后查看系统的各个指标,然后在进行配置。如下用jstat工具查看jvm的情况

jstat -gc javapid
###
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
13824.0 22528.0 13377.0  0.0   548864.0 535257.2  113152.0   46189.3   73984.0 71119.8 9728.0 9196.2     14    0.259   3      0.287    0.546

OU表示老年代所占用的内存为 46189.3 K(大约45M);那么jvm相应的配置参数应该做如下修改

-XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=64M -Xms180m -Xmx180m

 

hu_wenjie CSDN认证博客专家 Kubernetes/容器 Linux/CentOS 系统架构
运维开发工程师,负责系统各层级的自动化监控开发、系统的自动化巡检开发、熟悉微服务项目的自动化部署、集群方案部署、熟练掌握故障分析定位等。
相关推荐
©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:白松林 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值