2012-05-04 21 views
0

我在浏览器中运行我的PlayN游戏。在我的任务管理器中,我看到了google chrome或firefox的内存如何变得越来越大,达到512 MB。如何在playn中正确清除

可能的原因是我没有清理并销毁我在playn中使用的所有元素。 我没有清理任何事情,因为GarbageCollector在java中为我做了这些事情,我没想到在HTML5中遇到问题。

那么在使用它之后清理所有东西(IFaces,Layers,Images ...)最简单的方法是什么?

我可以摧毁iface或顶层吗?PlayN会毁掉我的所有子元素? 如果我销毁一个ImageLayer,底层Ima​​ge可能不会被销毁,对吧?

对不明确的问题抱歉。我只需要了解它的一般概念和最佳实践。

回答

1

大部分情况下,您需要做的唯一事情就是不要保留对不再需要的对象的引用。垃圾收集将为您处理剩下的问题。

您可以调用Layer.destroy来加速GPU内存的释放,但即使在垃圾回收处理时也会释放这些内存。在TriplePlay UI中,Interface.destroyRoot从UI中删除根(如果要保留接口但不再需要该根目录,则需要执行此操作),并销毁根目录的图层。

您可能遇到的问题是,HTML后端当前缓存所有资产的游戏的一生。所以如果你加载了大量的图片或其他数据,那最终会使用大量的浏览器内存。任何给定的图像不会被加载多次,但也许你的游戏中有很多图像。

我会在下一个PlayN版本之前更改这个缓存 - 无论你是否喜欢它,所以你必须自己缓存图片,如果你需要缓存的话,但至少你也可以在需要的时候释放它们。