Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

建议说明使用 ESModule 作为 mock 文件时,可能存在内存泄露风险。 #30

Closed
pfdgithub opened this issue May 23, 2023 · 2 comments

Comments

@pfdgithub
Copy link
Contributor

pfdgithub commented May 23, 2023

@pfdgithub pfdgithub changed the title 建议说明使用 ESModule 作为 建议说明使用 ESModule 作为 mock 文件时,可能存在内存泄露风险。 May 23, 2023
@pengzhanbo
Copy link
Owner

这个问题在插件的使用场景中,可能存在的风险并不高。

在实际的使用中, mock 文件的修改频率并不会很高,多数时候是 确定好 配置后,修改的频次会显著降低,其可能累计的内存开销在一个 vite 服务启动的开发周期内,发生溢出的可能性不高。

插件内部,对于 mock 文件更新后,是直接抛弃旧的引用,构造新的对象保存 mock 数据,这对于 V8 的垃圾回收机制来说是很容易回收不再使用的内存的。存在的可能风险是 编写 mock 文件的代码 本身就已经存在了 内存泄露的问题。

我在本地的项目中,尝试对 mock 文件进行了 1000次的高频次修改,并收集记录了 未修改前、500次修改时, 1000次修改时 的内存快照。 比对查看,内存的增长 并未出现明显的异常行为。

因此我不认为在 使用 ESModule 编写 mock 文件时,可能存在的内存泄露风险的严重程度需要显式的警告插件使用者需要留意该风险发生的情况。

@pfdgithub
Copy link
Contributor Author

是的,概率很低,已被加载的 ESModule 模块目前无法释放,只是作为提示而已。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants