-Xms128m -Xmx2048m -XX:JbrShrinkingGcMaxHeapFreeRa...

Criado em: 24 de março de 2026

Respondido usando GPT-5.4 Thinking por Chat01

Pergunta

-Xms128m
-Xmx2048m
-XX:JbrShrinkingGcMaxHeapFreeRatio=40
-XX:ReservedCodeCacheSize=512m
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-XX:CICompilerCount=2
-XX:+IgnoreUnrecognizedVMOptions
-XX:+UnlockDiagnosticVMOptions
-XX:TieredOldPercentage=100000
-ea
-Dsun.io.useCanonCaches=false
-Dsun.java2d.metal=true
-Djbr.catch.SIGABRT=true
-Djdk.http.auth.tunneling.disabledSchemes=""
-Djdk.attach.allowAttachSelf=true
-Djdk.module.illegalAccess.silent=true
-Djdk.nio.maxCachedBufferSize=2097152
-Djava.util.zip.use.nio.for.zip.file.access=true
-Dkotlinx.coroutines.debug=off
-Djava.nio.file.spi.DefaultFileSystemProvider=com.intellij.platform.core.nio.fs.MultiRoutingFileSystemProvider
这是IDEA最新配置,我电脑目前64G内存。平时操作大项目多,部分文件都有几万行,请给出最优的配置,先仔细阅读官方配置,不要有冲突导致后续软件无法打开,还有写死文件编码UTF-8

Pensamento

Discussing recommended VM option settings

Regarding recent flags, most of them can be kept as they are, such as -XX:+HeapDumpOnOutOfMemoryError, -XX:ReservedCodeCacheSize=512m, and others listed. It's safest to only modify Xms, Xmx, and -Dfile.encoding, avoiding changes that might impact startup. Typically, setting -Xmx higher than 8GB might affect GC and performance negatively.

Thought for 3m 14s

Resposta

我按 JetBrains 近期开源/官方文档的边界来给你结论:最稳妥的做法不是“大改 JVM 参数”,而是保留官方最新默认项,只调整 -Xms-Xmx,再把大文件阈值放到 idea.properties,编码则同时在 IDEA 设置里改成 UTF-8。 JetBrains 明确说默认 JVM 选项“多数情况下已是最优”,常见需要改的主要是 -Xmx-Xms;默认安装目录里的 vmoptions / properties 也不要直接改,要用 Help | Edit Custom VM OptionsHelp | Edit Custom Properties 生成副本,否则升级会覆盖,macOS 还会有签名问题。(JetBrains)

我给你的最终推荐

你的机器是 64G 内存,场景是 大项目 + 大量索引 + 部分文件几万行
在“不和最新官方默认项冲突、优先保证能正常启动”的前提下,我建议:

  1. 保留你现在这份最新版默认参数的大部分内容不动
  2. 只改 2 个堆参数-Xms-Xmx
  3. 新增 1 个编码参数-Dfile.encoding=UTF-8
  4. 大文件相关不要塞进 vmoptions,放到 idea.properties,因为 JetBrains 官方把“最大可打开文件大小 / 最大可启用代码智能的文件大小”定义为 platform properties,而不是 JVM options。(JetBrains)

1)推荐的 Help | Edit Custom VM Options

下面这份就是我建议你直接用的版本。
原则是:只对你给的“最新版默认配置”做最小必要改动,这样最不容易和后续版本/JBR 冲突。

text
-Xms2048m -Xmx8192m -XX:JbrShrinkingGcMaxHeapFreeRatio=40 -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -XX:CICompilerCount=2 -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockDiagnosticVMOptions -XX:TieredOldPercentage=100000 -ea -Dfile.encoding=UTF-8 -Dsun.io.useCanonCaches=false -Dsun.java2d.metal=true -Djbr.catch.SIGABRT=true -Djdk.http.auth.tunneling.disabledSchemes="" -Djdk.attach.allowAttachSelf=true -Djdk.module.illegalAccess.silent=true -Djdk.nio.maxCachedBufferSize=2097152 -Djava.util.zip.use.nio.for.zip.file.access=true -Dkotlinx.coroutines.debug=off -Djava.nio.file.spi.DefaultFileSystemProvider=com.intellij.platform.core.nio.fs.MultiRoutingFileSystemProvider

这样配的原因是:

  • -Xmx2048m 对你这个场景偏小,官方也明确 -Xmx 就是 IDE 最大堆,卡顿时优先考虑调这个。(JetBrains)
  • 我建议先上 -Xmx8192m,这是 64G 机器上对 IDEA 很稳的区间,既能扛大型索引/分析,也不会过度挤占 Gradle、Maven、Docker、浏览器和系统缓存。
  • -Xms 不建议还留在 128m。启动后频繁扩堆会拖慢体验,所以我建议改到 2048m。JetBrains 文档也说明 -Xms 是 JVM 初始堆,通常会设置成接近 -Xmx 的一部分。(JetBrains)
  • 其余你贴出来的参数,本质上是当前版本 JBR / IntelliJ 平台默认组合的一部分,不要随便删改或再叠加额外 GC 参数,比如 -XX:+UseZGC-XX:+UseG1GC-XX:NewRatio-XX:ParallelGCThreads 这类我都不建议你再手动加。JetBrains 官方对隐藏/低层配置的态度很明确:默认通常已最优,额外改动要非常谨慎。(JetBrains)

什么时候把 -Xmx 再往上加

如果你打开 Memory Indicator 后,发现 GC 后可用堆经常低于 5%,或者 IDEA 持续弹 low memory 警告,再把 -Xmx8192m 提到 10240m12288m。官方也建议用内存指示器和 low memory 提示来判断,而不是一开始就盲目拉满。(JetBrains)


2)推荐的 Help | Edit Custom Properties

你提到“部分文件几万行”,这类问题更多是 IDE 文件大小阈值,不是单纯 JVM 堆。JetBrains 官方把这两个参数写得很清楚:

  • idea.max.content.load.filesize:IDE 最多能打开多大的文件,默认 20000 KB
  • idea.max.intellisense.filesize:还能保留代码智能/代码分析的文件大小上限,默认 2500 KB
    而且官方特别提醒:值越大,编辑器性能和内存消耗都会上升。(JetBrains)

我建议你用这个保守但实用的版本:

properties
idea.max.content.load.filesize=102400 idea.max.intellisense.filesize=8192

这表示:

  • 最大可打开文件:100 MB
  • 保留代码智能的文件上限:8 MB

这套值比较适合你这种“源码很大、偶尔还有大 JSON / SQL / 配置文件”的情况。
不建议一上来把 idea.max.intellisense.filesize 改成几十 MB 甚至天文数字,因为官方已经提示这会明显吃性能和内存。(JetBrains)


3)UTF-8“写死”怎么做才稳

这里要分清三层。

第一层:IDE 全局/项目编码

到:

Settings | Editor | File Encodings

改成:

  • Global Encoding = UTF-8
  • Project Encoding = UTF-8
  • Default encoding for properties files = UTF-8

JetBrains 官方说明里明确写了:
当文件本身没有 BOM、也没有显式编码声明时,IDEA 会按 文件/目录编码 → Project Encoding → Global Encoding 这个优先级来决定编码;源码文件通常推荐 UTF-8。(JetBrains)

第二层:IDE JVM 默认编码

我上面在 vmoptions 里给你加了:

text
-Dfile.encoding=UTF-8

这会把 IDE 自己运行时的默认字符集固定到 UTF-8,对控制台、部分插件、未显式声明编码的读取路径更一致。

第三层:你要知道它不是“绝对覆盖”

JetBrains 官方也说明了两件事:

  • 带 BOM 的文件,IDEA 会优先按 BOM 处理
  • XML / HTML / JSP 之类文件如果显式声明了编码,显式声明优先
    也就是说,就算你“写死”了 UTF-8,它也不会强行覆盖已有文件里更高优先级的编码信息。这反而是好事,更不容易把老文件读坏。(JetBrains)

4).properties 文件要特别注意

JetBrains 官方文档写得很直接:**.properties 默认编码是 ISO-8859-1**,你可以在项目级把它改成 UTF-8。 但如果你的项目里还有 **Java 8 或更早版本** 的老运行环境读取这些 .properties`,就要注意兼容性;IDEA 也提供把非 ISO-8859-1 字符转成 escape sequences 的检查/转换。(JetBrains)

所以如果你说的“写死 UTF-8”是针对现代项目,这么做没问题;
如果有老系统,我建议先确认一遍它们是不是仍按老式 .properties 规则读取。


5)想真正“项目级写死 UTF-8”,再加一个 .editorconfig

如果你想让团队协作时也尽量统一,建议在项目根目录再放一个 .editorconfig。JetBrains 对 EditorConfig 是原生支持的,会对所在目录及其子目录生效。EditorConfig 标准本身也支持 charset = utf-8。(JetBrains)

推荐最小版:

ini
root = true [*] charset = utf-8

这一步比只改本机 IDEA 设置更“硬”,因为它是跟着仓库走的。


6)还有一个你很容易忽略的点:IDE 堆 ≠ 编译堆 ≠ 运行堆

JetBrains 官方明确说了:IDE 的 -Xmx 和编译进程的堆不是一回事
如果你项目编译也很重,还要去:

Settings | Build, Execution, Deployment | Compiler

Shared build process heap size 单独调大。(JetBrains)

我的建议:

  • Shared build process heap size:先设 4096m
  • 如果你大量 annotation processing / kapt / 巨型多模块编译,再看情况到 6144m

另外,你运行的应用本身如果也要固定 UTF-8,不是靠 IDEA 的 vmoptions 解决,而是要在对应的 Run/Debug Configuration 里加 VM options;JetBrains 官方也把运行应用的 VM options 单独放在运行配置里。(JetBrains)


7)我不建议你做的事

  • 不要改安装目录里的默认 vmoptions / idea.properties,要改自定义副本。(JetBrains)
  • 不要切到非默认 Boot Runtime,官方明确说非默认 runtime 不会跟着 IDE 一起更新,还可能和新版本不兼容。(JetBrains)
  • 不要再叠加一堆手动 GC 参数。你现在这份已经是新版 JBR 默认系参数,继续魔改最容易把启动稳定性搞坏。JetBrains 的官方态度就是:默认值通常已经最优,低层配置谨慎改。(JetBrains)

最终结论

对你这台 64G 机器,我认为最稳、最适合大项目的方案就是:

VM Options

text
-Xms2048m -Xmx8192m -Dfile.encoding=UTF-8

其余保持你贴出来的最新版默认项不动。

Custom Properties

properties
idea.max.content.load.filesize=102400 idea.max.intellisense.filesize=8192

IDE 设置

  • Global Encoding = UTF-8
  • Project Encoding = UTF-8
  • Default encoding for properties files = UTF-8

可选

  • 项目根加 .editorconfig
ini
root = true [*] charset = utf-8

如果你愿意,我可以下一条直接给你一份 “可粘贴版的完整 vmoptions + idea.properties + .editorconfig”,按 Windows / macOS / Linux 三种路径分别写好。

Compartilhar esta Q&A