VS Code打开包含Flutter与Spring Boot的项目根目录时Java语言支持启动耗时过长且触发内存溢出异常
VS Code打开包含Flutter与Spring Boot的项目根目录时Java语言支持启动耗时过长且触发内存溢出异常
老哥我太懂你这种糟心的情况了!上次我把Flutter和Spring Boot项目放在同一个根目录下用VS Code打开,Java语言扩展直接卡得我以为VS Code崩了,后来还报了OutOfMemoryException,折腾了半天才搞定。
其实核心问题就是Java语言扩展默认会扫描整个工作区的所有目录,包括Flutter的mobile文件夹里一堆和Java八竿子打不着的文件,扫描范围太大既拖慢速度又吃光内存。给你几个亲测有效的解决办法:
给Java扩展划定扫描边界,排除无关目录
这是最有效的治本方案,让Java扩展只专注处理Spring Boot所在的server目录:- 打开VS Code设置(快捷键Ctrl+,),搜索「Java > Project: Exclude Paths」
- 点击「添加项」,输入
**/mobile/**,这样Java扩展就会完全跳过Flutter的目录 - 你也可以在项目根目录的
.vscode/settings.json里手动配置,这样团队其他人也能复用这个设置:
顺便把{ "java.project.excludePaths": [ "**/mobile/**", "**/.git/**", "**/build/**", "**/target/**" ] }.git、build、target这些无关目录也排除,进一步减轻扫描负担。
调高Java扩展的堆内存配额
如果调整扫描范围后还是内存溢出,那就是Java扩展默认的堆内存不够用了,Spring Boot项目依赖多,扫描时需要更多内存:- 在VS Code设置里搜索「Java > Jdt Ls: VM Args」
- 把默认参数里的
-Xmx1G改成更大的数值,比如-Xmx2G(根据你电脑的内存情况来,8G内存的机器给2G-3G都没问题) - 手动配置的话,在
.vscode/settings.json里添加:{ "java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m -Xlog:disable" }
临时应急:单独打开Spring Boot目录
要是你急着干活不想折腾配置,直接单独打开server文件夹作为VS Code的工作区就行。这样Java扩展只会处理这个目录的内容,加载速度瞬间上来,也不会爆内存。检查扩展版本和冗余插件
- 确保你用的「Extension Pack for Java」是最新版本,旧版本可能有扫描逻辑的bug,更新后说不定就解决了问题
- 别装太多冗余的Java相关插件,比如同时装了好几个不同的Java支持插件,它们可能互相冲突、重复扫描,只会拖慢速度,留官方的这一套就够了
内容来源于stack exchange
相关产品推荐
相关产品推荐

