我正在为Android> = 2.1编写实时街机游戏。在游戏过程中,我不会分配内存,不会引诱GC。如果GC调用,则需要70-200ms的处理器。用户将此视为“哦,不,那场比赛是落后的......”。其他进程调用GC会减慢我的游戏速度
我检查了LogCat。有很多GC_FOR_MALLOC或GC_EXPLICIT。但是...不是来自我的过程的PID!我的比赛不会造成他们。它们是由于其他进程在后台运行造成的。一些壁纸,小工具,收音机,电子邮件,天气检查和其他服务...
我不完全理解它。我想,当例如壁纸消失时,它的onPause()被调用。所以,它应该停止它的所有线程,并且肯定不会分配任何内存(或者调用System.gc())。也许这是错误的实施?我不知道。但也有一些Android服务,这也导致GC不时......这很奇怪。
这是一个大的Android < = 2.2架构瑕疵? Android 2.3 introduces并发GC,需要更少的时间。
我能做些什么来确保我的游戏顺利运行?
为什么你不相信?是的,我已经在2.2和4.1上测试过了。 2.2上的行为就像我所描述的那样。正如我所提到的那样,在4.1中,有一个并发GC,这使得这个问题不那么严重。 – 2013-03-22 13:49:39