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

## 基础配置
# 服务器模式运行
-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
参考文献
- 各种gpt询问
- https://gitee.com/nn200433/run/blob/master/工具软件/IntelliJ IDEA 高效使用教程.md
- https://www.javacodegeeks.com/wp-content/uploads/2017/01/IntelliJ-IDEA-Handbook.pdf
- https://book.huihoo.com/pdf/confluent-kafka-definitive-guide-complete.pdf
如果觉得还阔以,望点点赞哈~
使用的时候需要根据当前机器的情况修改size(堆、元空间、回收线程数),由于机器不同配置不一,这只能提供一个大致的方向。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容