分享一个自用的IntelliJ IDEA Jvm配置

由于本人启动插件较多,所以花了不少时间专门研究IDEA的JVM配置,已达到需要的编码和使用流畅度。该配置会时不时更新,需要的可以订阅一下~
软件版本:IntelliJ IDEA 2024.1.4(Ultimate Edition)
启用插件数量:83个

分享一个自用的IntelliJ IDEA Jvm配置-Macfun-A very interesting site
## 基础配置
# 服务器模式运行
-server
# 时区编码
-Dfile.encoding=UTF-8
-Duser.timezone=GMT+8
# 设置堆的初始大小和最大大小
-Xms8g
-Xmx32g
# 设置元空间的初始大小和最大大小
-XX:MetaspaceSize=1G
-XX:MaxMetaspaceSize=2G
-XX:MaxDirectMemorySize=2G

## 垃圾回收 ZGC or ShenandoahGC
# 启用Z Garbage Collector(ZGC)
#-XX:+UseZGC
# ZGC回收间隔
#-XX:ZCollectionInterval=100
# 使用并发标记清除(ConcMarkSweep)垃圾回收器
#-XX:+UseConcMarkSweepGC
# 设置并行垃圾回收线程数
#-XX:ParallelGCThreads=20
# 设置软引用对象在每MB堆内存中存活的最短时间
#-XX:SoftRefLRUPolicyMSPerMB=1000
# 虚拟机在启动时预先分配堆空间
#-XX:+AlwaysPreTouch

# 启用Shenandoah Garbage Collector(Shenandoah GC)
-XX:+UseShenandoahGC
-XX:+UnlockExperimentalVMOptions
# 设置并行垃圾回收线程数(根据需要调整)
-XX:ParallelGCThreads=20
# 设置软引用对象在每MB堆内存中存活的最短时间
-XX:SoftRefLRUPolicyMSPerMB=1000
# 虚拟机在启动时预先分配堆空间
-XX:+AlwaysPreTouch
# 启用压缩指针(Compressed Oops)
-XX:+UseCompressedOops
# GC触发策略
-XX:ShenandoahHeuristic=passive
## 垃圾回收

## JIT(即时编译)参数
# 设置编译器线程数
-XX:CICompilerCount=20
# 启用分层编译
-XX:+TieredCompilation
# 设置停止级别,只进行第一级别的编译
-XX:TieredStopAtLevel=1
# 设置最大内联级别
-XX:MaxInlineLevel=9
# 设置第四层(Tier 4)最小调用阈值
-XX:Tier4MinInvocationThreshold=50000
# 设置第四层(Tier 4)调用阈值
-XX:Tier4InvocationThreshold=100000
# 设置第四层(Tier 4)编译阈值

## 代码设置
# 设置初始代码缓存大小和保留代码缓存大小
-XX:InitialCodeCacheSize=1G
-XX:ReservedCodeCacheSize=2G

## 错误日志和堆转储设置
# 在发生内存溢出错误时生成堆转储文件
-XX:+HeapDumpOnOutOfMemoryError
# 禁用快速抛出异常时的堆栈跟踪省略
-XX:-OmitStackTraceInFastThrow
# 允许自我附加
-Djdk.attach.allowAttachSelf
# 禁用对象晋升时的处理
-XX:-HandlePromotionFailure
# 解锁JVM的诊断选项
-XX:+UnlockDiagnosticVMOptions

## 其他设置
# 启用断言
-ea
# JVM激进优化
-XX:+AggressiveOpts
# 高随机数生成器
-Djava.security.egd=file:/dev/./urandom
# 启用字符串去重
-XX:+UseStringDeduplication
# 优化字符串连接
-XX:+OptimizeStringConcat
# 内存分配器
-XX:+UseTLAB
# 使用大页内存
-XX:+UseLargePages
# 文件系统缓存
-Dsun.io.useCanonPrefixCache=false
# 设置首选使用IPv4协议栈
-Djava.net.preferIPv4Stack=true
# 禁用HTTP隧道身份验证
-Djdk.http.auth.tunneling.disabledSchemes=""
# 解锁JVM中的实验性选项
-XX:+UnlockExperimentalVMOptions
# 忽略不认识的JVM选项
-XX:+IgnoreUnrecognizedVMOptions
# 禁用规范(canonical)文件名缓存
-Dsun.io.useCanonCaches=false
# 捕获SIGABRT信号
-Djbr.catch.SIGABRT=true
# 关闭Kotlin协程库的调试日志
-Dkotlinx.coroutines.debug=off
# 打开指定包的包访问权限
--add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED
--add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED
# JDK VisualGC 插件
--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED
--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor.event=ALL-UNNAMED
--add-exports=jdk.internal.jvmstat/sun.jvmstat.perfdata.monitor=ALL-UNNAMED
# 打开指定包的包访问权限
--add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED
--add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED
# JDK VisualGC 插件
--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED
--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor.event=ALL-UNNAMED
--add-exports=jdk.internal.jvmstat/sun.jvmstat.perfdata.monitor=ALL-UNNAMED

参考文献

如果觉得还阔以,望点点赞哈~
使用的时候需要根据当前机器的情况修改size(堆、元空间、回收线程数),由于机器不同配置不一,这只能提供一个大致的方向。

温馨提示: 本文最后更新于2024-11-27 21:24:31,某些文章具有时效性,若有错误或已失效,请在下方 留言或联系 Macfun-A very interesting site
© 版权声明
THE END
喜欢就支持一下吧
点赞13赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情图片快捷回复

    暂无评论内容