# 编辑器内存告警

#### 问题现象

在编辑ArkTS代码的时候收到内存告警，告警的场景有哪些，如何解决？

#### 问题定位

编辑器代码过程中收到内存告警，可能有多种现象和原因，汇总如下：

| 问题场景 | 问题原因 |
| --- | --- |
| ArkTS语言服务因内存不足而终止 | 多次执行git pull或切分支等大量修改代码的操作时，编辑器的Node进程内存峰值超过上限（默认为8GB），来不及回收内存导致OOM，编辑功能失效。 |
| ArkTS语言服务可用内存不足 | Node进程实际使用内存与启动时设置的内存上限配置比超过95%，继续使用容易导致Node进程内存达到上限频繁触发垃圾回收，导致代码联想等功能出现卡顿。 |
| ArkTS语言服务异常终止 | 工程代码量较大超出启动内存(默认为8GB)或多次执行git pull或切分支等大量修改代码的操作时，编辑器的Node进程内存峰值超过上限（默认为8GB），来不及回收内存导致OOM。 |
| 扫描文件并建立索引失败 | 编辑器启动时会扫描工程代码，当开发的工程代码量超过一定大小时，可能导致编辑器的Node进程超出内存上限（默认为8GB），从而导致编辑器启动失败。 |

#### 场景1

**问题现象**

**解决措施**

可以调整编辑器Node进程的内存上限来解决上述问题，请根据工程代码量和开发环境内存大小配置合适的Node进程内存上限。内存上限值需要随工程的代码量和复杂程度增长，通常代码量300万行的工程建议配置大于12G，400万行建议配置大于15G，每增加100万行增加3G，可根据具体情况适当增减。

以配置内存上限为12G举例，打开DevEco Studio，通过菜单栏的Help > Edit Custom Properties...，打开idea.properties配置文件。在文件中新增一行 arkts.server.max.old.space.size=12288，然后重启DevEco Studio。编辑器Node进程的内存上限将设置为12288M（即12G）。

#### 场景2

**问题现象**

**解决措施**

可以通过设置当前工程编辑器语言服务的Node进程的内存上限来解决上述问题。

点击配置内存（打开DevEco Studio，通过菜单栏的文件>设置... 打开，搜索内存设置）增加ArkTS语言服务最大内存大小的值。

默认值通常为8G，如果在idea.properties中配置了arkts.server.max.old.space.size值则默认值等于该值。ArkTS语言服务最大内存大小是工程独立配置，配置后不会影响其他工程。idea.properties中的arkts.server.max.old.space.size值为全局配置。

#### 场景3

**问题现象**

**解决措施**

措施1：设置当前工程编辑器Node进程的内存上限同场景2。

措施2：可配置部分模块不加载卸载和加载模块。

#### 场景4

**问题现象**

**解决措施**

优先按照场景2修改，若当前版本没有ArkTS语言服务最大内存大小设置则按照场景1修改。