FEATURED · 精选文章

IntelliJ IDEA 内存设置:-Xmx、CodeCache 与启动排查

发布时间 / 2026/9/18 8:27:52
来源 / 创域科博编辑部
栏目 / 资讯中心
IntelliJ IDEA 内存设置:-Xmx、CodeCache 与启动排查 每次帮人看 IDEA 卡顿的问题十次里有八次对方的第一句话是我内存已经调到 8G 了。然后我打开他的 Help → Edit Custom VM Options 一看文件里写着-Xmx4096——没有单位。JVM 把这四个数字当成 4096 字节堆小得连启动都过不去要么就是文件改了但改的是安装目录里那份IDE 实际读的是用户目录里那份压根没生效。修改 IntelliJ IDEA 内存大小这件事看起来就是改一个数字实际上牵扯到 JVM 参数语法、JetBrains 的配置加载优先级、Windows 页面文件、Gradle 守护进程、编译器进程、索引缓存等一整套东西。它不难但坑全在细节里而且踩坑的表现形式往往是改了没用而不是报错让人很难定位。下面我从IDEA 到底吃哪块内存讲起把三种修改路径、关键参数的含义、按机器配置给出的数值建议、启动失败的排查链路以及主进程之外的几个吃内存大户一次说清楚。刚装完 IDEA 的新手和已经用了几年但一直没搞明白自己-Xmx到底生效没生效的老用户都能从这里找到能直接抄的配置。1. IDEA 卡顿的第一现场先弄清它到底在吃哪块内存很多人一遇到卡顿就条件反射加-Xmx但如果卡的原因是别的内存池满了你把堆调到 16G 也没用。所以在动手改之前得先知道 IDEA 这个进程内部到底有几个钱包钱分别花在哪儿。1.1 从 JVM 堆到 JIT 代码缓存IDEA 的几个内存池IDEA 本质上就是一个跑在 JVM 上的 Java 程序虽然它自己也提供 Kotlin、JS、Python 等一堆语言支持但宿主还是 JVM。这个 JVM 进程里的内存主要分成这么几块Java 堆Heap由-Xmx控制上限是最大的一块。项目模型、PSI 树语法结构树、索引的部分结构、编辑器的各种缓存对象都在里面。卡顿、GC 抖动、OOM 报错绝大多数和它有关。JIT 代码缓存Code Cache由-XX:ReservedCodeCacheSize控制。JVM 会把反复执行的热点方法编译成机器码存这里。IDEA 加了几十个插件之后类和方法数量暴涨这块很容易被填满。填满之后 JVM 会打日志警告并且退化成解释执行表现就是用着用着突然整体变卡重启又好了。元空间Metaspace类元数据。IDEA 加载的类非常多元空间占用几百兆是常态。它默认不受-Xmx限制由-XX:MaxMetaspaceSize单独管。线程栈、直接内存Direct Memory每个线程一份栈直接内存主要被文件 IO、NIO 用。这两块平时不用特别调但排查 OOM 的时候要想起来它们不在堆里。注意平时说的IDEA 内存是一个模糊说法。-Xmx只管堆代码缓存要单独调元空间又要单独调。搞混了就会出现堆加到 8G 还是卡的情况。1.2 默认值到底是多少为什么老有人觉得我改过但没用IntelliJ IDEA 的默认堆上限并不是一个固定数字它跟着版本变。早年大概 2017 到 2019 那批版本默认是 750MB这个值放在今天的项目规模下明显偏小也是IDEA 默认很卡这个印象的来源之一。2020 年之后的版本把默认值提上来了普遍在 2048MB 这个量级同时启动器还会参考机器的物理内存做一定调整。问题在于默认值是跟着安装包走的而你改过的值是跟着用户配置走的这两份配置在不同位置加载时只读其中一份。这就是我明明改了为什么没用的最大来源。还有一个高频误判改完参数之后没有真正重启。点右上角叉号关窗口在某些设置下只是把窗口收起来IDE 进程还活着必须走 File → Exit或者直接用任务管理器确认idea64.exe进程消失了才算彻底退出。JVM 参数只在进程启动的那一刻读取运行中改文件是没有任何效果的。1.3 内存指示器和 jcmd先量体温再吃药动手之前建议先量一下。两种方式第一打开 IDEA 右下角的状态栏内存指示器。如果看不到去 Settings → Appearance Behavior → Appearance 里找 Show memory indicator 相关的开关打开不同版本位置略有差异。它显示的是已用堆 / 堆上限比如1024M of 2048M。这个上限就是当前生效的-Xmx一眼就能看穿改没改成功。第二如果你想看得更细用 JDK 自带的命令行工具。先拿到进程号jps -l输出里形如12345 org.jetbrains.idea.Main的那一行就是 IDEA 主进程。然后jcmd 12345 VM.flags jcmd 12345 GC.heap_info第一条会打印这个进程当前所有生效的 JVM 参数包括-XX:MaxHeapSize...第二条给出堆的实际使用情况。这两条命令我在排查参数到底生效没的时候用得最多比翻文件快得多也不会被路径问题误导。2. 三条修改路径选错文件等于白改改 IDEA 内存有三个入口它们最终改的文件不是同一个优先级也不同。先把这件事理清楚能省掉后面一大半的自我怀疑。2.1 图形界面滑块Change Memory Settings 的适用边界新版 IDEA 在 Help 菜单下有一个 Change Memory Settings有的版本叫 Change Memory Settings / 内存设置点开就是一个滑块加一个输入框填完重启即可。它本质上只改一件事-Xmx。这个入口适合谁适合我只想让堆大一点其他一个字都不想动的人。它的优点是绝对不会写错语法、不会破坏文件、不需要知道路径。缺点是只能改-Xmx代码缓存、GC 参数一个都碰不到。如果你卡顿的原因是代码缓存满了用这个滑块调到天荒地老也没用。我的建议是第一次调先用它快速把堆拉到一个合理值验证加了内存确实有用确认有用之后再切到下面第二种方式做精细调整。2.2 Help → Edit Custom VM Options 为什么是最稳的一条路Help → Edit Custom VM Options 会打开首次使用时自动创建一份属于当前用户的 vmoptions 文件内容是安装目录里默认配置的完整拷贝然后让你改这份拷贝。这是我最推荐的方式理由有三个第一它是用户级配置升级 IDE 不会丢。每次 IDEA 大版本更新安装目录下的默认文件都会被覆盖如果你当初改的是安装目录那份升级之后参数全没了然后你会再次陷入以前调过怎么又卡了的困惑。第二它在加载优先级里排在前面。启动器按顺序找配置文件找到用户级这份就不再往下读了。更关键的是它读的是其中一份不是把多份叠加合并。所以在这份文件里改结果是确定的。第三自动生成的那一份是默认文件的完整拷贝。这意味着你不需要担心我改了用户文件结果把安装目录里的默认参数弄丢了。IDEA 已经把默认该带的东西都抄过来了你只需要在它上面动数字。如果是手工去别的地方新建一份文件就很容易只写一两行-Xmx把默认的一堆-D参数全丢掉那反而会引出一堆莫名其妙的问题。打开之后你会看到一个纯文本文件内容大概长这样-Xmx2048m -XX:ReservedCodeCacheSize512m -XX:UseG1GC -XX:SoftRefLRUPolicyMSPerMB50 -Dsun.io.useCanonCachesfalse -Dsun.awt.keepWorkingSetOnMinimizetrue每行一个参数#开头是注释。改完保存完整重启 IDE再用jcmd或内存指示器验证。2.3 安装目录的 bin 目录与环境变量什么情况下才动它安装目录下的bin/idea64.exe.vmoptionsWindows或bin/idea.vmoptionsmacOS/Linux是安装级的默认配置。正常情况下不建议直接改原因上面说了升级会丢。那什么情况下要动它典型场景是多用户共用一台机器或者用系统级部署想让所有用户用统一参数。这种时候改安装目录那份让所有人都继承是合理的。改的时候记得自己留一份备份或者把改动记在笔记里方便升级后恢复。另外还有一个环境变量入口JetBrains 的启动器支持通过环境变量指定 vmoptions 文件路径。它的优先级通常比用户文件更高。如果你发现无论怎么改用户文件都没效果就该怀疑是不是有同事或者某个自动化脚本在系统环境变量里指定了别的文件——去环境变量列表里搜一下 IDEA 相关的项把可疑的删掉或者改掉。2.4 各平台文件位置速查省得你满硬盘找下面这张表按平台列一下几个关键位置。版本号部分替换成你自己在用的版本比如IntelliJIdea2023.2。平台用户级 vmoptions安装级 vmoptionsSystem / 缓存目录Windows%APPDATA%\JetBrains\IntelliJIdea版本\idea64.exe.vmoptions安装目录\bin\idea64.exe.vmoptions%LOCALAPPDATA%\JetBrains\IntelliJIdea版本macOS~/Library/Application Support/JetBrains/IntelliJIdea版本/idea.vmoptionsApp/Contents/bin/idea.vmoptions~/Library/Caches/JetBrains/IntelliJIdea版本Linux~/.config/JetBrains/IntelliJIdea版本/idea64.vmoptions安装目录/bin/idea64.vmoptions~/.cache/JetBrains/IntelliJIdea版本提示不要凭记忆手工拼路径。最省事的做法是走 Help → Edit Custom VM Options让 IDEA 自己把文件打开给你你还能顺手看到它到底在哪。3. 参数逐个拆Xmx、Xms、CodeCache 与那几个网红参数文件找到了接下来是往里面写什么。这一节把最常改的几个参数一个一个说清楚包括它们到底管什么、写错了会怎样。3.1 -Xmx 的单位陷阱与写法规范-Xmx是最大堆大小。语法是数字 单位单位可以是k/K、m/M、g/G大小写不敏感。正确的写法只有这几种-Xmx2048m -Xmx2g -Xmx4096M必须带单位。写成-Xmx4096的结果不是4096MB而是4096 字节。JVM 启动时发现堆小得离谱会直接报 Too small maximum heap 一类的初始化错误IDE 根本起不来。这个错误我第一次遇到的时候也是一脸问号因为看起来数字明明很大。另一个容易忽略的点是-Xmx和-Xms的区别-Xmx是上限-Xms是初始值。不写-Xms的时候 JVM 会从一个较小的值开始按需往上扩。上限设小了实际堆到顶就触发频繁 GC上限设大了但实际用不到也不会立刻占满物理内存——这一点很多人搞反以为-Xmx16g就一下子吃掉 16G 内存其实不是占用是慢慢涨上去的。3.2 -Xms 要不要和 -Xmx 相等网上流传一种说法-Xms和-Xmx必须设成一样大不然 JVM 会反复调整堆大小性能很差。 这个说法在服务器场景下有一半道理在 IDEA 这种桌面应用上要打个折扣。给 IDEA 设-Xms -Xmx的代价是IDE 一启动就向操作系统承诺这么大一块内存。虽然现代 JVM 不会立刻把每个字节都写进去但提交量上去了在物理内存紧张的机器上会加速触发系统换页反而更慢。我的做法是分情况内存宽裕16G 以上而且不常同时开几十个浏览器标签页-Xms设成-Xmx的一半就行足够减少扩容次数了。内存紧张8G 机器干脆不写-Xms让 JVM 自己决定把宝贵的物理内存留给系统和其他程序。超大工程 大内存机器32G 以上可以设成和-Xmx相等省掉扩容抖动。这时候内存本来就用不完稳一点更划算。3.3 ReservedCodeCacheSize插件越多越该加这个参数叫-XX:ReservedCodeCacheSize管 JIT 编译出来的机器码存放空间。默认值通常在 240MB 到 512MB 之间看版本。它和-Xmx的关系是堆大了、项目大了、装了几十个插件之后被反复调用的方法数量会暴涨代码缓存消耗得很快。一旦填满JVM 会在 IDE 日志里打出一条类似 CodeCache is full. Compiler has been disabled. 的警告之后热点方法不再被编译全走解释执行整机响应速度肉眼可见地下滑。怎么判断自己是不是踩了这个坑去 Help → Show Log 打开日志文件搜 CodeCache。如果有相关警告就该加了。加多少我一般直接写-XX:ReservedCodeCacheSize1024m注意这个参数是保留而不是立刻占用它预留的是地址空间。设成 1G 不会让你开机就少 1G 内存所以放心调512m 到 1024m 都是常见的稳妥选择。3.4 SoftRefLRUPolicyMSPerMB被传歪的参数-XX:SoftRefLRUPolicyMSPerMB是网上流传最广、也最容易用错的一个 IDEA 参数。默认值 1000表示每 MB 空闲堆空间软引用在最后一次被访问后再多存活 1000 毫秒。网上有个非常流行的说法把它从 1000 改成 50能解决 IDEA 卡顿。这个说法有历史背景——早年某些版本确实因为这个值导致软引用缓存的回收节奏不理想。但把它改小到 50 带来的副作用是软引用缓存的存活时间被大幅压缩本来可以复用的索引缓存、类信息缓存被过早回收然后代码再跑一遍又要重建结果就是GC 更频繁、索引反复加载、极端情况下直接 OOM。我的建议是保持默认不要动它。如果你的 IDEA 在-Xmx已经调到合理值之后还是频繁 GC那要查的是是不是有插件在疯狂制造垃圾对象而不是去拧这个旋钮。真要动也应该配合 GC 日志观察后再决定而不是照抄一段来路不明的配置。3.5 一个完整的参数模板把上面的讨论合成一份可以直接抄的配置。这是给一台 16G 内存机器、中等规模项目用的版本-Xms2048m -Xmx6144m -XX:ReservedCodeCacheSize1024m -XX:HeapDumpOnOutOfMemoryError -Dsun.awt.keepWorkingSetOnMinimizetrue-XX:HeapDumpOnOutOfMemoryError这一条值得特别说一下它让 JVM 在真的堆溢出时自动 dump 一份堆快照。IDEA 崩了之后你至少有个文件可以拿分析工具看不然只能对着一句 OOM 报错干瞪眼。-Dsun.awt.keepWorkingSetOnMinimizetrue是 Windows 上的小技巧它让 IDEA 最小化到任务栏时不被系统主动把工作集换出去。切回来的时候不用重新加载响应更快。代价是任务管理器里它的内存占用数字会一直很高看着有点吓人但对实际体验是有帮助的。4. 到底给多大按物理内存和能力边界算我应该给 IDEA 分多少内存是问得最多的问题也是最没有标准答案的问题。不过可以给一个相当靠谱的起步区间再根据实际情况微调。4.1 一张按内存容量分档的对照表先记住一条原则必须给操作系统和其他程序留出空间。IDEA 不是独占总内存的浏览器、Docker、数据库、虚拟机都在抢。给 IDEA 的上限一般不要超过物理内存的 50% 到 60%。物理内存建议 -Xmx建议 -Xms适用场景8GB2048–3072m不设或 1024m只开 IDE 加少量浏览器标签项目不大16GB4096–6144m2048m最常见的主流配置多模块项目32GB8192–12288m4096m单体仓库、前后端一起开、跑本地容器64GB 及以上12288–16384m8192m超大型工程堆再往上要谨慎提示8GB 的机器不要硬撑到-Xmx8g那等于让 JVM 拥有理论上吃光所有内存的资格。真到那一步系统会开始疯狂换页整机卡成幻灯片比堆小一点还难受。4.2 堆不是越大越好GC 停顿与提交内存的代价内存当然是越大越好是另一个常见误解。堆调大有两个实实在在的代价第一Full GC 的停顿时间会变长。现代 JVM 默认用 G1 收集器在十几 G 的堆上一旦发生 Full GC停顿到几秒是正常的。IDEA 假死两三秒你的手已经点了几次鼠标了体验反而更差。堆越大、存活对象越多这个停顿越久。第二提交内存上去了系统压力变大。堆上限调高JVM 会更放心地往里放东西实际占用跟着涨。如果同时还有别的程序在抢内存操作系统就会动用页面文件把冷数据换到磁盘上。这时候你会发现 IDE 是看起来没崩但毫无反应——因为它在等磁盘。所以合理的做法是够用就好 观察调整先用表格里的起步值打开内存指示器用几天看已用堆是不是长期稳定在上限的 70% 以下。如果长期在 85% 以上并且 GC 频繁再加一档如果长期只有一半可以适当降一点把内存让给别的程序。4.3 Windows 虚拟内存页面文件该怎么设这一节专门给 Windows 用户。很多人为了提性能会去把虚拟内存关掉或者设得很小——这在 IDEA 这类大型 JVM 应用上是个灾难。虚拟内存页面文件在 Windows 上不只是物理内存不够时的备用空间。JVM 启动时要向操作系统预留一大块连续的地址空间这个预留动作依赖系统的提交限制commit limit而 commit limit 是物理内存加上页面文件大小算出来的。页面文件设得太小JVM 连预留都做不了直接报启动失败。所以正确的做法是不要关虚拟内存交给系统自动管理或者手工设成物理内存的 1 到 1.5 倍。具体路径是系统属性 → 高级 → 性能设置 → 高级 → 虚拟内存 → 更改把自动管理所有驱动器的分页文件大小勾上。有人会问我 32G 物理内存还要设页面文件要的。哪怕物理内存宽裕页面文件也参与提交限制的计算关掉它会让一些大内存应用在申请地址空间时失败。这不是 IDEA 独有的问题而是 Windows 的内存管理机制决定的。5. 改完启动失败或没生效完整排查链路改完参数有两种坏结果一是 IDEA 直接启动不了二是启动起来了但参数没生效。这两类问题的排查思路不一样分开讲。5.1 error code -4 / -6 与 Could not reserve enough space启动失败时Windows 上最常见的提示是一个弹窗里面写着Failed to create JVM加上一个error code -4或者-6macOS/Linux 上则经常是终端里一行Could not reserve enough space for object heap或者Invalid maximum heap size。按下面的顺序排查基本能覆盖绝大多数情况检查语法。看有没有漏掉单位、写错参数名、多打了空格、把-Xmx写成了Xmx。参数行不能有中文标点。检查数值。-Xmx是不是超过了物理内存能承受的范围比如 8G 机器上写-Xmx12g。检查启动器位数。用的是不是idea64.exe。如果你手工把快捷方式指向了别的东西或者系统里装的 JDK 是 32 位的堆上限会被死死限制在 1.5G 左右一超就报错。检查页面文件。回到上一节确认虚拟内存没被关掉或者设得离谱。逐行回退。把改动的参数一行一行删掉每次重启试一次。这个方法笨但绝对有效尤其是当你一次性从网上抄了一大段参数的时候。我的经验是一次性加五个参数然后启动失败是最浪费时间的操作。每次只改一到两个参数重启验证确定了再加下一批。慢是慢了点但省下了反复猜的过程。5.2 内存指示器上限没变逐层定位读取的是哪个文件启动正常但参数不生效这类问题更隐蔽。排查链路是这样的第一步用jcmd pid VM.flags看实际生效的参数。这一步能立刻区分参数没读进去和参数读进去了但被别人覆盖了。第二步如果MaxHeapSize还是老值去确认你改的文件是不是当前生效的那份。最直接的办法是走 Help → Edit Custom VM Options看打开的是哪个路径然后确认你之前改的是不是同一个文件。如果打开的这个文件里没有你写的参数那说明你改的是另一份。第三步检查环境变量。把系统环境和用户环境里所有跟 IDEA 相关的变量列一遍看有没有指向别的 vmoptions 文件的。有的话要么改那个文件要么把变量删掉。第四步检查是不是有多个安装副本。用 Toolbox 装的 IDEA、手工解压的 IDEA、以前留下的旧版本可能同时存在。你改的是 A 的那份配置双击启动的是 B。任务管理器里看进程的完整路径一眼就能分辨。注意这一步最容易被忽略。我见过有人改了三遍配置都不生效最后发现桌面快捷方式指向的是一个两年前解压的旧目录。5.3 换行符、BOM、隐藏扩展名这些低级但要命的问题还有三个看着很蠢但真实存在、而且我本人踩过的坑文件编码带 BOM。用某些编辑器打开 vmoptions 文件另存之后文件开头被写入了 BOM 头。JVM 解析第一行参数时会因为前面多了三个不可见字节而报错。用 IDE 或 VS Code 保存时编码选 UTF-8 不带 BOM。换行符不统一。Windows 用 CRLFLinux/macOS 用 LF。跨平台拷贝配置文件时格式不匹配可能让某一行被当成上一行的延续。稳妥做法是在哪个平台就用哪个平台的编辑器保存一遍。文件扩展名被隐藏。你以为在改idea64.exe.vmoptions实际上系统隐藏了已知扩展名你改的是idea64.exe.vmoptions.txt。进文件资源管理器把显示文件扩展名打开确认一遍。这三个问题的共同点是从文件内容上完全看不出来只能靠环境配置检查发现。所以排查的时候不要只盯着文件内容看也要看文件本身的属性。6. IDEA 主进程之外的三个吃内存大户改完 IDEA 主进程的内存很多人会问为什么我编译的时候还是 OOM 因为编译、构建这些活根本不是主进程干的它们跑在独立的 JVM 里各有一份-Xmx和主进程的配置互不影响。这是我在带新人时讲过最多遍的一件事。6.1 Gradle / Maven 守护进程Gradle 构建跑在一个叫 Gradle Daemon 的独立 JVM 进程里它的堆大小由项目根目录下gradle.properties里的org.gradle.jvmargs决定。默认值在近年的 Gradle 版本里大概是 512MB 到 2GB 不等规模大一点的项目分分钟不够用。推荐写法org.gradle.jvmargs-Xmx3072m -XX:MaxMetaspaceSize768m -Dfile.encodingUTF-8Maven 的话配置入口有两个一个是在 Settings → Build Tools → Maven → Runner 里填 VM Options另一个是通过MAVEN_OPTS环境变量全局设置。前者只影响 IDEA 里的 Maven 运行后者影响所有命令行调用建议先用前者作用范围清楚。这里有个容易搞混的现象改完 IDEA 主进程内存之后重启Gradle Daemon 可能还是老的。因为守护进程是跨会话复用的它有自己的一套淘汰逻辑。改完gradle.properties之后最好手动停一下守护进程gradle --stop或者重启一次系统确保新参数被读到。6.2 编译进程的堆IDEA 默认把编译任务放到一个独立的构建进程里这个进程的堆大小在 Settings → Build, Execution, Deployment → Compiler 里配叫 Build process heap size 之类默认在 700MB 左右。触发它不够用的场景很典型项目里有超大的单个源文件、有大量注解处理器比如 Lombok、MapStruct、各种代码生成插件或者同时编译的模块特别多。表现是编译到一半报内存溢出或者干脆卡住不动。这种时候把 IDEA 主进程堆调再大也没用得调这个值一般 1500MB 到 2000MB 能覆盖绝大多数情况。顺便提一个相关的坑如果你是 Kotlin 项目Kotlin 编译器也有自己的堆设置路径在 Settings → Languages Frameworks → Kotlin 附近不同版本位置有差异。Kotlin 编译吃内存是出了名的多模块 Kotlin 项目建议一起调。6.3 索引与缓存目录IDEA 会在 System 目录下维护一大堆缓存和索引文件一个大项目索引完占几个 G 是常事十几 G 也不稀奇。它占的是磁盘不是内存但会影响内存表现——原因在于 IDE 会在内存里缓存索引的一部分缓存被换出后重新加载是要花时间的。需要关注两件事第一保证磁盘有足够余量。系统盘或者 System 目录所在的盘至少留出 20GB 空闲。磁盘满了索引写不进去IDE 的行为会变得很诡异——表现为反复重建索引、卡在 Updating indexes 不动。第二必要时清理。走 File → Invalidate Caches / Restart可以清掉各种缓存。注意这个操作会触发一次完整的重新索引大项目可能要等几分钟到十几分钟所以别在赶工时随手点。7. 比加内存更有效的几件事内存加到位之后如果还是觉得卡问题往往不在内存大小上。下面这几件事我在实际项目里验证过收益有时候比继续加-Xmx大得多。7.1 排除目录与索引瘦身这是我认为优先级最高的一条。IDEA 会为项目下所有内容建立索引如果你没告诉它哪些目录不用管它会把node_modules、dist、build、target、日志目录里的几万个小文件全部索引一遍。这既拖慢索引速度也持续吃内存。做法很简单在项目树里右键这些目录 → Mark Directory as → Excluded。排除之后它们不再参与索引、不再参与搜索、不再参与代码检查内存占用会明显下降。一个典型的 Node Java 混合项目光是把node_modules排除掉索引体积就能砍掉一大半。这一步花三十秒效果比把-Xmx从 4G 加到 8G 还明显。除了排除目录还有两个和大文件相关的设置放在 idea.properties 里走 Help → Edit Custom Properties 打开比如限制多大以上的文件才提供完整代码辅助、多大以上的文件才完整加载内容。默认值通常在 2.5MB 和 20MB 这个量级。如果你的项目里有自动生成的巨型源文件或压缩后的 JS 文件调这两个值能避免 IDE 为了解析一个文件而吃掉大量内存。调完之后对那些文件就只剩基本的文本编辑能力这是有意的取舍。7.2 插件、省电模式和后台任务插件是内存消耗的隐形大户。每装一个插件就多一批常驻类和后台线程。判断方法很直接Help → Diagnostic Tools 里可以看插件列表或者干脆把不用的插件禁用掉再观察内存指示器的变化。我的习惯是每季度过一遍插件列表三个月没用过的直接禁掉需要的时候再开。另外两个开关也值得一提。一个是省电模式Power Save Mode打开之后会关闭代码检查和后台索引机器明显安静代价是没有实时提示。在跑压力测试或者机器发烫的时候可以临时开。另一个是后台任务的并发度IDEA 会同时跑索引、检查、VCS 刷新等一堆任务内存紧张时它们会互相抢资源可以在设置里适当降低并发。7.3 长期使用后的清理节奏IDEA 用久了缓存目录会持续膨胀配置里也会累积一些历史遗留的旧参数。我自己的做法是建立一个固定节奏每隔几个月走一遍 Help → Edit Custom VM Options把里面的参数过一遍确认每一行都知道是干什么用的删掉从网上抄来但已经不需要的。同时看一眼 System 目录的体积超过 20GB 就用 Invalidate Caches 清一次挑不忙的时候做。如果换了机器或者加了内存重新按第 4 节的表格校一遍-Xmx。这套流程下来基本上不会出现某天突然特别卡怎么调都回不去的情况——因为你知道每一行参数是为什么在那儿的。最后分享一个我自己踩过、也见过别人反复踩的小坑调内存这件事一次只改一个变量。改-Xmx就只改-Xmx重启观察一天确认有效之后再动下一个。最怕的就是一次从某个配置分享帖里抄二十行参数启动慢了不知道是哪行的问题启动崩了也不知道删哪行。参数本身都是有道理的但堆在一起出了问题就变成一团无法分解的迷雾。我现在的做法是维护一份自己机器上的参数清单每加一条都在旁边注明日期和原因换机器的时候直接把这份清单搬过去比找任何优化教程都省事。
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻