JVM--常用参数及设置

6 篇文章 0 订阅

1.参数分类

java启动参数共分为三类

  • 标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;
  • 非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;
  • 非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用;

2.核心参数

参数名称内存区域说明
-Xms堆内存Java堆内存的大小
-Xmx堆内存Java堆内存的最大大小
-Xmn堆内存Java堆内存中的新生代大小
老年代内存大小=堆内存-新生代
-XX:PermSize
-XX:MetaspaceSize
方法区永久代大小
-XX:MaxPermSize
-XX:MaxMetaspaceSize
方法区永久代最大大小
-Xss栈内存每个线程的栈内存大小

-Xms和-Xmx,分别用于设置Java堆内存的刚开始的大小,以及允许扩张到的最大大小。对于这对参数,通常来说,都会设置为完全一样的大小。

在这里插入图片描述

-Xmn,这个参数也是很常见的,他用来设置Java堆内存中的新生代的大小,堆内存大小-新生代内存大小就是给老年代的内存大小。

在这里插入图片描述

-XX:PermSize和 -XX:MaxPermSize,分别限定了永久代大小和永久代的最大大小,JDK 1.8以后的版本,这俩参数被替换为了-XX:MetaspaceSize和-XX:MaxMetaspaceSize。

在这里插入图片描述

-Xss,这个参数限定了每个线程的栈内存大小。每个线程都有一个自己的虚拟机栈,然后每次执行一个方法,就会将方法的栈帧压入线程的栈里,方法执行完毕,那么栈帧就会从线程的栈里出栈。

在这里插入图片描述

其他参数介绍说明

参数名称参数说明
-XX:NewRatio年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)
-XX:NewRatio=4表示年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5
Xms=Xmx并且设置了Xmn的情况下,该参数不需要进行设置。
-XX:SurvivorRatioEden区与Survivor区的大小比值
-XX:MaxTenuringThreshold垃圾最大年龄:如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代. 对于年老代比较多的应用,可以提高效率.如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活 时间,增加在年轻代即被回收的概率
该参数只有在串行GC时才有效。
-XX:+DisableExplicitGC禁止调用System.gc();但jvm的gc仍然有效
-XX:+UseConcMarkSweepGC对老生代采用并发标记交换算法进行GC
-XX:+CMSParallelRemarkEnabled降低标记停顿
-XX:LargePageSizeInBytes=128m内存页的大小不可设置过大, 会影响Perm的大小
-XX:+UseFastAccessorMethods原始类型的快速优化
-XX:+UseCMSInitiatingOccupancyOnly使用手动定义初始化定义开始CMS收集
-XX:CMSInitiatingOccupancyFraction=70使用cms作为垃圾回收使用70%后开始CMS收集
-XX:+HeapDumpOnOutOfMemoryError当首次遭遇OOM时导出此时堆中相关信息
-XX:+PrintGCDetails每次GC时打印详细信息
-XX:+PrintGCDateStamps打印每次GC的时间戳
-Xloggc:/data/log/gc.logGC日志路径

3.设置JVM参数

  • 本地调试:在启动类里面,右键,选择 Edit xxx ,会弹出一个启动类编辑界面,以IDEA为例:

在这里插入图片描述

VM options 栏输入对于的参数即可。如:

-Xmx1024m -Xms1024m -Xmn512m  -XX:MetaspaceSize=256m -Xss256k

-Xms之类的参数直接后面跟上你要设置的内存大小(以m为单位)。但是-XX:PermSize这种格式的参数,需要跟一个“=”符号。

在这里插入图片描述

  • jar包启动
nohup java -server -Xmx2048m -Xms2048m -Xmn768m  -XX:MetaspaceSize=256m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/data/log/gc.log  -jar ExamApp.jar  >>/dev/null 2>&1 &
  • Tomcat 启动

修改bin目录下的catalina.sh,在文件最前面添加一行配置即可。

set JAVA_OPTS=-Xms2048m -Xmx2048m -Xss1024K -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m

4.思考题:你的系统JVM参数是如何配置的?

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zheng45

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值