IDEA 设置启动 JVM 参数

一、设置方式

1. 通过 IDEA 设置

在这里插入图片描述

2. 编辑配置文件

IDEA 安装目录 / bin 目录,其中有两个 vmoptions 文件,针对不同的 JDK 进行配置

二、参数说明

1. 通用参数说明

参数说明
-Xms初始化堆内存大小, eg. -Xms1G
-Xmx堆内存最大值,eg. -Xms1G,通常与 -Xms 设置相同的值
-XX:ReservedCodeCacheSize“代码缓存”,它是用来存储已编译方法生成的本地代码。代码缓存确实很少引起性能问题,但是一旦发生其影响可能是毁灭性的。如果代码缓存被占满,JVM会打印出一条警告消息,并切换到interpreted-only 模式:JIT编译器被停用,字节码将不再会被编译成机器码。因此,应用程序将继续运行,但运行速度会降低一个数量级,直到有人注意到这个问题。就像其他内存区域一样,我们可以自定义代码缓存的大小。它们的参数都是字节值。eg. -XX:ReservedCodeCacheSize=240m
-XX:InitialCodeCacheSize“代码缓存” 初始大小,eg. -XX:InitialCodeCacheSize=240m
-XX:+UseCodeCacheFlushing如果代码缓存不断增长,例如,因为热部署引起的内存泄漏,那么提高代码的缓存大小只会延缓其发生溢出。为了避免这种情况的发生,当代码缓存被填满时让JVM放弃一些编译代码。通过使用这个参数,我们至少可以避免当代码缓存被填满的时候 JVM 切换到 interpreted-only 模式, 该值默认是开启的
-XX:+AutoBoxCacheMaxJVM 在加载 Integer 这个类时,会优先加载静态的代码。当 JVM 进程启动完毕后, -128 ~ +127 范围的数字会被缓存起来,调用 valueOf 方法的时候,如果是这个范围内的数字,则直接从缓存取出。eg. -XX:AutoBoxCacheMax=20000
-XX:+AlwaysPreTouchJAVA 进程启动的时候,虽然我们可以为 JVM 指定合适的内存大小,但是这些内存操作系统并没有真正的分配给 JVM ,而是等 JVM 访问这些内存的时候,才真正分配,这样会造成以下问题。 GC 的时候,新生代的对象要晋升到老年代的时候,需要内存,这个时候操作系统才真正分配内存,这样就会加大 young gc 的停顿时间; 可能存在内存碎片的问题。可以在 JVM 启动的时候, eg. -XX:+AlwaysPreTouch
-XX:PermSizeJVM 初始分配的非堆内存,就是永久代,JDK 1.7 适用。 eg. -XX:PermSize=64M
-XX:MaxPermSizeJVM 最大允许分配的非堆内存,按需分配, JDK 1.7 适用,eg. -XX:MaxPermSize=128M
-XX:MetaspaceSize初始元空间大小,达到该值就会触发垃圾收集进行类型卸载,同时 GC 会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的空间,那么在不超过 MaxMetaspaceSize 时,适当提高该值, JDK 8 适用。eg. -XX:MetaspaceSize=128M
-XX:MaxMetaspaceSize最大元空间,默认是没有限制的,JDK 8 适用。 eg. -XX:MaxMetaspaceSize =128M

2. 使用 CMS 垃圾回收

参数说明
-XX:+UseConcMarkSweepGC采用 CMS 垃圾回收机制

3. 使用 G1 垃圾回收

参数说明
-XX:+UseG1GCG1 垃圾回收机制
-XX:+UseStringDeduplicationG1垃圾回收器的时候,通过该参数我们可以通过删除重复的字符串,只保留一个char[]来优化堆内存。

三、样例

1. 采用 CMS 垃圾回收

-server
-Xms1024m
-Xmx2048m
-XX:MaxPermSize=1024m
-XX:ReservedCodeCacheSize=512m
-XX:+UseConcMarkSweepGC
-XX:+UseCodeCacheFlushing
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Dsun.awt.keepWorkingSetOnMinimize=true
-Djava.net.preferIPv4Stack=true
-Djdk.http.auth.tunneling.disabledSchemes=""
-Djsse.enablesSNIExtension=false
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Dfile.encoding=UTF-8
// -Duser.name=

2. 采用 G1垃圾回收配置

-server
-XX:MetaspaceSize=128M 
-XX:MaxMetaspaceSize=512M 
-XX:+AlwaysPreTouch 
-Xms128m
-Xmx4g
-XX:ReservedCodeCacheSize=512m
-XX:+UseG1GC
-XX:+UseStringDeduplication
-XX:AutoBoxCacheMax=20000
-ea
-Dsun.io.useCanonCaches=false
-Dsun.awt.keepWorkingSetOnMinimize=true
-Djava.net.preferIPv4Stack=true
-Djdk.http.auth.tunneling.disabledSchemes=""
-Djsse.enablesSNIExtension=false
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Dfile.encoding=UTF-8
// -Duser.name=

四、参考

Intellij IDEA 设置启动JVM参数

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值