IDEA 设置启动 JVM 参数

目录

  • 设置方式
  • 参数说明
    • 通用参数说明
    • 使用 CMS 垃圾回收
    • 使用 G1 垃圾回收
  • 样例
    • 采用 CMS 垃圾回收
    • 采用 G1垃圾回收配置
  • 参考

设置方式

  • 通过 IDEA 设置
    IDEA 设置启动 JVM 参数_第1张图片- 编辑配置文件
    IDEA 安装目录 / bin 目录,其中有两个 vmoptions 文件,针对不同的 JDK 进行配置

参数说明

通用参数说明

参数 说明
-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:+AutoBoxCacheMax JVM 在加载 Integer 这个类时,会优先加载静态的代码。当 JVM 进程启动完毕后, -128 ~ +127 范围的数字会被缓存起来,调用 valueOf 方法的时候,如果是这个范围内的数字,则直接从缓存取出。eg. -XX:AutoBoxCacheMax=20000
-XX:+AlwaysPreTouch JAVA 进程启动的时候,虽然我们可以为 JVM 指定合适的内存大小,但是这些内存操作系统并没有真正的分配给 JVM ,而是等 JVM 访问这些内存的时候,才真正分配,这样会造成以下问题。 GC 的时候,新生代的对象要晋升到老年代的时候,需要内存,这个时候操作系统才真正分配内存,这样就会加大 young gc 的停顿时间; 可能存在内存碎片的问题。可以在 JVM 启动的时候, eg. -XX:+AlwaysPreTouch
-XX:PermSize JVM 初始分配的非堆内存,就是永久代,JDK 1.7 适用。 eg. -XX:PermSize=64M
-XX:MaxPermSize JVM 最大允许分配的非堆内存,按需分配, 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

使用 CMS 垃圾回收

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

使用 G1 垃圾回收

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

样例

采用 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=

采用 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参数

你可能感兴趣的:(JVM)