8语言共生想挑战的可以试试,不过还是希望大家根据自身硬件情况理性配置。下面直接上干货~
重大提醒:魔法修改版的兄弟注意保留原有魔法配置行,别让 IDE 找不到北!
测试场景 | 优化前 | 优化后 | 提升效果 |
多crate项目编译 | 常常卡死 | 稳定运行 | 从崩溃到稳定 |
宏展开代码补全 | 1-2秒延迟 | 200-300ms | 终于能用了 |
内存占用峰值 | 6.5GB+ | 3.5-4GB | 能同时开其他IDE了 |
索引建立时间 | 5-8分钟 | 1-2分钟 | 可以安心喝杯咖啡了 |
类别 | 参数 | 说明 |
基础内存 | -Xms1024m | 初始堆内存(1GB) |
-Xmx4096m | 最大堆内存(4GB) | |
-XX:MaxDirectMemorySize=2G | 直接内存上限(2GB) | |
-XX:ReservedCodeCacheSize=1024m | JIT代码缓存(1GB) | |
GC与性能 | -XX:+UseG1GC | 使用G1垃圾回收器 |
-XX:ParallelGCThreads=12 | 并行GC线程数 | |
-XX:ConcGCThreads=6 | 并发GC线程数 | |
-XX:CICompilerCount=14 | JIT编译器线程数 | |
-XX:SoftRefLRUPolicyMSPerMB=1000 | 软引用回收策略 | |
错误处理 | -XX:+HeapDumpOnOutOfMemoryError | OOM时生成堆转储 |
-XX:HeapDumpPath=$USER_HOME/ | 堆转储文件路径 | |
-XX:ErrorFile=$USER_HOME/ | JVM错误日志路径 | |
-XX:-OmitStackTraceInFastThrow | 保留完整异常堆栈 | |
编码配置 | -Dfile.encoding=UTF-8 | 默认文件编码 |
-Dsun.jnu.encoding=UTF-8 | 文件系统编码 | |
-Dconsole.encoding=UTF-8 | 控制台编码 | |
-Dsun.stdout.encoding=UTF-8 | 标准输出编码 | |
-Dsun.stderr.encoding=UTF-8 | 标准错误编码 | |
开发优化 | -Didea.groovy.console.quick=true | Groovy控制台快速模式 |
-Dgroovy.antlr4=false | 禁用Groovy ANTLR4 | |
-Dgroovy.grape.enable=false | 禁用Groovy Grape | |
-Dkotlinx.coroutines.debug=off | 关闭协程调试 | |
模块访问 | --add-opens=java.base/ | 开放ASM内部包 |
--add-opens=java.base/ | 开放ASM Tree包 | |
--enable-native-access=ALL-UNNAMED | 允许原生代码访问 | |
网络功能 | -Djdk.http.auth.tunneling.disabledSchemes="" | 允许所有HTTP隧道方案 |
-Djdk.attach.allowAttachSelf=true | 允许JVM自附加 | |
-Djdk.module.illegalAccess.silent=true | 静默处理非法模块访问 | |
调试验证 | -ea | 启用断言 |
-Dsun.io.useCanonCaches=false | 禁用路径缓存 | |
-noverify | 禁用字节码验证 | |
不推荐 | -Dsun.java2d.d3d=false | 移除(图形问题) |
-Dsun.java2d.opengl=true | 移除(图形问题) | |
-Dsun.java2d.renderer=... | 移除(图形问题) | |
-Dsun.java2d.marlin.doChecks=false | 移除(图形问题) |
# 在多语言环境下,Cargo要懂得谦让
[build]
jobs = 6 # 别太贪心,留核心给其他语言
incremental = true # 增量编译是救命稻草
# 工作区配置要精简
[workspace]
resolver = "2"
members = ["src", "examples"] # 非必要的crate别放进来
-Xms1024m
-Xmx4096m
-XX:MaxDirectMemorySize=2G
-XX:ReservedCodeCacheSize=1024m
-XX:+IgnoreUnrecognizedVMOptions
-XX:+UseG1GC
-XX:SoftRefLRUPolicyMSPerMB=1000
-XX:ParallelGCThreads=12
-XX:ConcGCThreads=6
-XX:CICompilerCount=14
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-XX:ErrorFile=$USER_HOME/java_error_in_rustrover_%p.log
-XX:HeapDumpPath=$USER_HOME/java_error_in_rustrover.hprof
-Dsun.jnu.encoding=UTF-8
-Dconsole.encoding=UTF-8
-Dfile.encoding=UTF-8
-Dsun.stdout.encoding=UTF-8
-Dsun.stderr.encoding=UTF-8
-Didea.groovy.console.quick=true
-Dgroovy.antlr4=false
-Dgroovy.grape.enable=false
-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
--enable-native-access=ALL-UNNAMED
-Djdk.http.auth.tunneling.disabledSchemes=""
-Djdk.attach.allowAttachSelf=true
-Djdk.module.illegalAccess.silent=true
-ea
-Dsun.io.useCanonCaches=false
-noverify
这里是你自己的魔法路径
友情提醒,真正的.vmoptions参数内容最好不要带注释,容易芭比Q,必须纯净干净

再次提醒,根据自己的电脑配置适当调参增减,我的电脑是洋垃圾,DDR3内存64G,贴上来给你们参考

最后在补充下其他调参优化,把代码补全"形参"提示相关选项全部关闭,对我来说用不到,降低性能

pycharm,clion,rustrover进程内存占用也贴上来,全部IDE齐开,留给你们自己去挑战了
