我正在开始开发安卓游戏,我正在使用的库之一是万能涡轮发动机。作者做出了一些很大程度上基于性能优化的设计决策,以至于API的某些方面牺牲了可用性。
我正在考虑把这个项目分成一个GitHub回购和清理API,但我不知道Android性能的好坏。在基于标准Hotspot的JVM上,我不会太担心对象实例化和垃圾收集的开销,因为该平台已经对这些东西进行了足够的优化,因此我认为这个库的池行为是一个过早的优化,但是对于Android,我不知道.
与Hotspot相比,Android上创建对象和垃圾收集的性能特点是什么(姜饼->KitKat)?如果我将重复创建同一个类的新实例(但状态不同),那么值得合并这些实例吗?
发布于 2014-03-01 21:11:00
与桌面Java应用不同,Android应用程序目前运行在达尔维克虚拟机之上。
在移动设备上,垃圾收集相对昂贵,您可能希望避免在性能敏感的代码路径中分配对象,垃圾收集将应用程序暂停数百毫秒并不少见--这是任何游戏或用户在列表视图中滚动时最不想要的东西。
当然,这也取决于设备的不同,Android限制了应用程序可以使用的内存量,在高端设备上,除了从硬件中获得性能增益之外,您的应用程序通常可以使用更多的内存,而不是在低端设备上运行。
移动设备已经走了很长的路,但是你仍然不能忽视移动设备上的内存管理,即使是高端设备。
我建议您首先更好地了解Android (以及一般的移动设备)的性能/内存,所以当您对该库进行性能更改时,您可以确定您正在进行改进(并且始终在测量!)。一个很好的起点是官方的绩效最佳实践。
https://stackoverflow.com/questions/22119557
复制相似问题