由于Android GC性能改变的编码风格,有多远?

我一直听说Android应用程序应该尝试限制创build的对象的数量,以减less垃圾回收器的工作量。 这是有道理的,你可能不想创build大量的对象来跟踪有限的内存占用,例如在传统的服务器应用程序创build100,000个对象在几秒钟内不会闻所未闻。

问题是我应该采取多远? 我已经看到很多依靠静态的Android应用程序的例子,据说是“加快速度”。 增加从几十到几百个垃圾收集的实例的数量是否真的使这个差异变大? 我可以想象改变我的编码风格,现在创build了成千上万的对象,就像你可能在一个成熟的Java EE服务器上,但依靠一堆静态(据说)减less垃圾收集对象的数量似乎奇。

为了创build高性能的Android应用程序,需要改变自己的编码风格多less?

Solutions Collecting From Web of "由于Android GC性能改变的编码风格,有多远?"

“避免分配”的build议通常是关于游戏循环。 虚拟机不得不暂停收集垃圾,而当你的游戏以30fpsanimation时,你不希望发生这种情况。 如果不分配任何对象,虚拟机将不需要收集垃圾来释放内存。 如果你有一个游戏需要运行而不会出现用户可见的打嗝,那么你应该考虑改变相关部分的代码,以尽量减less或消除分配。

如果你正在制作一个拥有食谱或显示照片的应用程序,我不会担心 – GC打嗝不是用户可能会注意到的。

Dalvik GC的未来改进(例如代代收集)应该使这个问题更less。

我想说,这取决于你在做什么以及你现在的编码风格。 总是有必要牢记移动设备的硬件限制和相应的程序,但是再一次,无论您的应用程序运行在哪里,都应该认识到这一点。 如果您正在进行大量实时更新或类似游戏的密集型计算,那么您可以考虑使用NDK,但是如果您只是在执行普通的用户驱动的东西,那就不应该那么糟糕。 我的build议是尽量节俭,但不要太担心优化,直到你感觉到它的运行。