IDEA VM options参数优化--深入篇

常见VM options优化参数

-server
-Xms512m
-Xmx512m
-XX:MaxMetaspaceSize=512m
-XX:MetaspaceSize=512m
-XX:InitialBootClassLoaderMetaspaceSize=64M
-XX:NewRatio=2
-XX:SurvivorRatio=8
-XX:MaxTenuringThreshold=6
-XX:+UseConcMarkSweepGC
-XX:CMSFullGCsBeforeCompaction=5
-XX:+CMSParallelRemarkEnabled
-XX:+CMSClassUnloadingEnabled
-Xss1024k
-XX:+DisableExplicitGC
-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
-XX:ReservedCodeCacheSize=240m
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dfile.encoding=UTF-8
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-verbose:gc
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:D:/temp/gclog/idea.gc.log
-XX:+PrintHeapAtGC

常用配置

optins参数优化

部分参数说明

参数及其默认值描述
-server设置JVM使Server模式,特点是启动速度比较慢,但运行时性能和内存管理效率很高,适用于生产环境。在具有64位能力的JDK环境下默认启用该模式
-client设置JVM使用Client模式,特点是启动速度比较快,但运行时性能和内存管理效率不高,通常用于客户端应用程序或开发调试;在32位环境下直接运行Java程序默认启用该模式
-Xms512m设置JVM初始堆内存512M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存
-Xmx523m设置JVM最大堆内存为512M
-XX:MaxMetaspaceSize=512m设置持久代最大值为512M
-XX:MetaspaceSize=512m设置持久代初始值为512M
-XX:NewRatio=2设置年轻代(包括1个Eden和2个Survivor区)与年老代的比值。表示年轻代比年老代为1:2
-XX:SurvivorRatio=8设置年轻代中Eden区与Survivor区的比值。表示2个Survivor区(JVM堆内存年轻代中默认有2个大小相等的Survivor区)与1个Eden区的比值为1:1:8,即1个Survivor区占整个年轻代大小的1/10
-XX:MaxTenuringThreshold=6表示一个对象如果在Survivor区(救助空间)移动了6次还没有被垃圾回收就进入年老代。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代,对于需要大量常驻内存的应用,这样做可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象在年轻代存活时间,增加对象在年轻代被垃圾回收的概率,减少Full GC的频率,这样做可以在某种程度上提高服务稳定性
-Xss1024k设置每个线程的栈大小。JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。线程栈的大小是个双刃剑,如果设置过小,可能会出现栈溢出,特别是在该线程内有递归、大的循环时出现溢出的可能性更大,如果该值设置过大(例如>2MB),就会影响到创建栈的数量,将会在很大程度上降低系统的性能,如果是多线程的应用,就会出现内存溢出的错误。应当根据应用的线程所需内存大小进行调整
-XX:ReservedCodeCacheSize=240m设置代码缓存的大小,用来存储已编译方法生成的本地代码
-verbose:gc开启gc日志
-XX:+PrintGCDetails打印gc详情
-XX:+PrintGCTimeStamps打印GC时间戳
-Xloggc:D:/temp/gclog/idea.gc.log将日志输出到文件
-XX:+PrintHeapAtGC每次一次GC后,都打印堆信息

优先级

在IDEA设置JVM运行参数,通常有以下三种方式:

代码配置

在编码中使用了System.setProperty对相应参数进行设置。

Application设置

此种方式是上边所描述的**“常用配置”**,是日常开发中最常用到的配置方式。根据以下路径指示配置所需要的系统参数:Run–>Edit Configurations–>VM options

全局配置

  1. 找到并打开安装IDEA时,你所指定的安装目录的bin文件夹;
  2. 在bin目录下,找到idea.exe.vmoptions文件;
  3. 打开该文件编辑并保存。

全局配置

优先级关系

代码配置>Application配置>全局配置

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值