# 部分情况下内存用量较高的原因分析 # 原因1 **在长时间运行的动作中,持续循环导致GC线程没有机会进行垃圾回收。** 解决方法: - 中止后台动作。 - 在需要长时间运行的动作的循环(每个/重复等)模块中,增加几个毫秒的”等待时间“。(”重复“模块可以直接在参数中设置循环间隔时间) # 原因2 在编辑较为复杂的组合动作时,会占用较多内存: - 编辑界面比较复杂,每个步骤会需要一个界面组件(包含了很多子组件)来显示。 - 动作undo/redo历史记录。 每条记录相对于整个动作的一个副本,一共会保存100个副本。如果动作有1M大小,历史记录就会占用100M的内存。由于内部的实现机制,实际占用会比这个更多一些。 正常情况下,这个内存会在关闭编辑窗口一段时间后自动释放。 === 很多情况下可能是上述2个因素的结合。 编辑动作后,即便关闭了编辑窗口,因为运行中的动作持续循环导致服务进行内存回收,编辑窗口的内存得不到释放。在多次打开和关闭动作编辑窗口后,就会累计较多的内存占用了。 Quicker正常占用内存100-200M左右。 如果你遇到了大内存占用不释放的情况,并且没有运行长期动作、没有打开的编辑动作窗口,那么可以创建一个转储文件发给CL分析一下。 ![](https://files.getquicker.net/_sitefiles/kc/kb/2020/08/25/151520_3_mceclip0.png?x-oss-process=image/resize,w_800)