我正在浏览器中运行我的PlayN游戏。在我的任务管理器中,我看到谷歌浏览器或Firefox的内存越来越大,达到512 MB。
可能的原因是我没有清理和销毁我在playn中使用的所有元素。 我没有清理任何东西,因为GarbageCollector在java中为我做了这个,我没想到在HTML5中遇到问题。
那么在使用它之后清理所有内容(IFaces,Layers,Images ...)的最简单方法是什么?
我可以破坏iface或顶层,PlayN会为我销毁所有子元素吗? 如果我销毁了一个ImageLayer,底层的Image可能不会被破坏,对吗?
抱歉这个非特定问题。我只需要了解它的一般概念和最佳实践。
答案 0 :(得分:1)
在大多数情况下,您唯一需要做的就是不保留对不再需要的对象的引用。垃圾收集将为您完成剩余的工作。
你可以调用Layer.destroy
来加速GPU内存的释放,但是当把手被垃圾收集时,即使这样也会被释放。在TriplePlay UI中,Interface.destroyRoot
从UI中移除根(如果您要保持接口但不再需要该根,则需要执行此操作)并销毁根的图层。
您可能遇到的问题是HTML后端当前在游戏的生命周期内缓存所有资产。因此,如果您加载了大量图像或其他数据,最终将使用大量的浏览器内存。任何给定的图像都不会被加载多次,但也许你的游戏中有很多图像。
我会在下一个PlayN版本发布之前更改此缓存 - 无论你喜不喜欢还是不喜欢的策略,所以如果你需要缓存它们,你必须自己缓存图像,但至少你也可以在需要时释放它们。