我正在开发一个HTML 5游戏,它已经在线了,但它目前很小,一切都还可以.
事情是,随着它的增长,它将加载许多,许多图像,音乐,声音效果等等.玩游戏15分钟后,可能已经加载了至少100种不同的资源.由于它是一个HTML5应用程序,它在游戏过程中永远不会刷新页面,所以它们都在后台堆叠.
我注意到,每次我打开资源- WebKit的至少使用Web检查-仍然有一次我删除了<img>,该<link>到CSS和其他人.我猜它还在记忆中,只是没有被使用,对吧?
这最终会消耗大量的RAM,并导致性能下降,特别是在iOS和Android手机上(我在当前版本上已经略微注意到),其资源比台式机更受限制.
我的问题是:是否可以通过JavaScript完全卸载资源,释放RAM中的空间?无需刷新整个页面以"清理它".
最糟糕的情况:使用框架是否可以通过删除框架来释放这些框架的资源?
谢谢!
您的描述意味着您已完全删除对资源的所有引用。那么,您所看到的行为只是没有调用垃圾收集器来清理空间,这在 javascript 实现中很常见,直到“有必要”为止。设置null或调用delete通常不会有更好的效果。
作为常见情况,您通常可以CollectGarbage()在场景加载/卸载期间调用以强制收集过程。当为游戏“阶段”加载数据时,这通常是最佳解决方案,因为这是一个时间不严格的时间。您通常不希望收集器在游戏过程中调用,除非它不是一个非常实时的游戏。
如果您想为常见的游戏控制保留某些资源,框架通常是一个困难的解决方案。您需要考虑是刷新整个资源还是仅刷新某些资源。