由createJS制作的单页面Web应用程序占用的内存(RAM)在没有内存泄漏的情况下不断增加

时间:2016-11-11 14:20:40

标签: javascript html5 memory createjs

我目前使用createJS创建了几个单页Web应用程序。 基本原则是在应用程序的不同屏幕之间预加载图像和声音,然后在屏幕更改时从内存中释放这些资产。

为了正确销毁资产,我目前正在使用文档中提供的每种方法,例如:

assetLoader.close();
assetLoader.removeAll();
assetLoader.destroy();
element.removeAllEventListeners();
createjs.Sound.removeAllSounds()
createjs.Ticker.removeEventListener("tick", stage);
stage.enableDOMEvents(false),

并为初始化期间创建的每个对象分配null

最终结果看起来非常不错,因为应用程序占用的 JavaScript内存始终保持不变(30-60 MB),无论我在应用程序的屏幕之间导航多少

然而,即使我在JavaScript端有0个内存泄漏,Web应用程序占用的总RAM内存也一直在增加,而不会减少。

这会导致我的所有应用程序最终达到移动设备的内存限制,然后崩溃。

基本上,我不知道RAM内存中究竟保存了什么,并且从未发布过。我强烈怀疑页面中预装的图像和声音资源永远不会从浏览器中删除,即使与它们相关的JS变量早已被释放。

我也无法访问或手动删除DOM元素。 在这种情况下,Chrome开发工具也不够用,当我使用堆快照或记录分配时间轴时,它们似乎总是指代的JavaScript内存。

在这种情况下,如果文档中提供的方法不够,如何释放这些图像和声音资源占用的内存?

编辑:我知道重新加载页面会清除RAM内存,但由于这些是单页网页应用程序,我非常希望避免使用它。

0 个答案:

没有答案