语言服务
PhpStorm 依赖 TypeScript、Vue、Astro、Svelte 以及其他特定于框架的语言服务来提供自动补全、代码分析和错误高亮显示。
配置内存处理
虽然 PhpStorm 致力于提供与语言服务的顺畅集成,但仍可能出现由语言服务而非 PhpStorm 本身引起的 内存不足 错误。
内存处理模式
当语言服务运行时内存不足,PhpStorm 会首先尝试重启它。 连续两次尝试失败后,语言服务将停止,PhpStorm 会在状态栏上的 语言服务 微件中指示错误,并显示包含错误消息的弹出窗口。
为防止 内存不足 错误或使其得到无缝解决,从而确保语言服务稳定运行,可以通过以下两种模式配置内存处理:
自动增加内存
在此模式下,当即将发生 内存不足 错误时,PhpStorm 会自动增加 1000MB,并在后台重启语言服务。
PhpStorm 会以静默方式持续采用这种方式,直至达到 RAM 的 25% 最大内存上限,此时语言服务将停止,PhpStorm 会显示包含错误消息的弹出窗口。
有关改善此情况的可行步骤的信息,请参阅 故障排查。
设置内存限制
在此模式下,手动指定语言服务可使用的最大内存。 在达到此限制之前,PhpStorm 会在每次发生 内存不足 错误时建议增加 1000MB。
达到指定限制后,语言服务将停止,PhpStorm 会显示包含错误消息的弹出窗口。
有关改善此情况的可行步骤的信息,请参阅 故障排查。
配置 TypeScript 语言服务的内存处理
按下 Ctrl+Alt+S 打开设置,并导航到 。
在 语言服务内存 区域中,选择内存处理模式:
在 语言服务内存 区域中,选择 如果可用,自动增加内存 以静默增加内存并重启语言服务。
或者,选择 设置内存限制 并指定语言服务可使用的最大内存。
如果指定的内存大小超过可用 RAM,PhpStorm 会在工具提示中建议一个适当的值。
故障排查
内存不足错误
当语言服务超过其已分配的内存限制且无法再处理工作负载时,会发生 内存不足 错误。 这通常由以下原因导致:
当前正在处理的项目包含大量文件和依赖项。
IDE 设置中指定的最大内存限制不足以满足语言服务的需求。
增加内存分配
按下 Ctrl+Alt+S 打开设置,并导航到 。
在 语言服务内存 区域中,选择 设置内存限制 选项。
逐步增加限制,例如从 4GB 增加到 6GB,然后再增加到 8GB。 监控改进情况。
限制项目作用域。
包含过多文件或依赖项的大型项目可能会重载语言服务。 为了降低大型代码库中的负载,请遵循 TypeScript 团队提供的 性能指南中的建议,尤其是 使用项目引用和 配置 tsconfig.json 或 jsconfig.json部分。
升级或降级
确保使用的是最新版本的语言服务。
PhpStorm 随附捆绑版本的语言服务。 不过,较新版本的语言服务通常包含性能改进。 因此,建议使语言服务保持最新。
要安装最新版本的语言服务,请打开命令行 shell 或内嵌的 终端 (Alt+F12 ),然后根据所用的语言服务和软件包管理器输入以下命令之一:
npm install --save-dev typescript或
pnpm add --save-dev typescript或
yarn add --dev typescriptnpm install --save-dev @vue/language-server或
pnpm add --save-dev @vue/language-server或
yarn add --dev @vue/language-servernpm install --save-dev svelte-language-server typescript-svelte-plugin或
pnpm add --save-dev svelte-language-server typescript-svelte-plugin或
yarn add --dev svelte-language-server typescript-svelte-pluginnpm install --save-dev @astrojs/language-server或
pnpm add --save-dev @astrojs/language-server或
yarn add --dev @astrojs/language-server如果语言服务更新后出现问题,请考虑降级到先前版本,以确认该问题是否由更新引入。
TypeScript 服务未启动
TypeScript 语言服务未启动,且未显示任何适当通知。 因此,类型推断不可用,也不会显示补全或导入建议。
增加启动超时时间
按下 Ctrl+Alt+S 打开设置,并导航到 。
在 JavaScript and TypeScript 区域中,增加 TypeScript 服务启动超时 字段中的值。

在 PhpStorm 问题跟踪器中提交问题
如果问题仍然存在,请在 PhpStorm 问题跟踪器中提交问题并附上项目。 这将帮助我们更高效地重现和调查该问题。