我在一家小型 Android 游戏开发公司工作,目前我遇到了问题。我正在运行一个非常标准的 windows 7 x64 机器,带有 Eclipse 和 Android SDK。
我正在阅读我的程序的 LogCat 输出,想知道为什么我的游戏甚至不显示。我很快看到所有堆都在增长,并认为我可能有太多纹理/太大的纹理等。我将问题定位为纹理加载,然后我开始使用 DDMS,发现我的堆不会增长到 19MB 以上。我剪掉了几个纹理并尝试再次构建和运行。令我震惊的是,堆不会一直增长到超过 6.6MB。有没有人有什么建议?
tl;dr:我的堆增长到 19MB,然后失败了,所以我取出了更消耗内存的纹理,将其保持在堆中的 19MB 以下,现在我的堆不会超过 6.6MB。
编辑:取出较大纹理时的 logcat 输出:
08-19 19:19:53.744:调试/dalvikvm(4699):GC_FOR_MALLOC 在 49 毫秒内释放了 91 个对象/514016 个字节 08-19 19:19:54.184:调试/dalvikvm(4699):GC_FOR_MALLOC 在 48 毫秒内释放了 104 个对象/494088 个字节 08-19 19:19:54.404:WARN/ActivityManager(59):启动超时已过期,放弃唤醒锁! 08-19 19:19:54.764:调试/dalvikvm(4699):GC_FOR_MALLOC 在 49 毫秒内释放了 85 个对象/384664 个字节 08-19 19:19:54.935: WARN/ActivityManager(59): HistoryRecord{4612eec8 com.wickeyware.zombiearcher.android/.AndroidGame} 的活动空闲超时 08-19 19:19:55.234:调试/dalvikvm(4699):GC_FOR_MALLOC 在 47 毫秒内释放了 104 个对象/504648 个字节 08-19 19:19:55.875:调试/dalvikvm(4699):GC_FOR_MALLOC 在 55 毫秒内释放了 85 个对象/505712 个字节 08-19 19:19:56.905:调试/dalvikvm(4699):GC_FOR_MALLOC 在 50 毫秒内释放了 104 个对象/522392 个字节 08-19 19:19:57.535:调试/dalvikvm(4699):GC_FOR_MALLOC 在 50 毫秒内释放了 56 个对象/388896 个字节 08-19 19:19:57.695: INFO/WindowManager(59): WIN DEATH: Window{4606a8a0 com.android.launcher/com.android.launcher2.Launcher paused=false} 08-19 19:19:57.705: INFO/ActivityManager(59): 进程 com.android.launcher (pid 4669) 已经死亡。 08-19 19:19:57.825:INFO/ActivityManager(59):内存不足:没有更多的后台进程。 08-19 19:19:57.865: INFO/dalvikvm(4699): dvmDdmHandleHpsgChunk(当 1, 什么 0, 堆 0) 08-19 19:19:58.575: DEBUG/ddm-heap(4699): 堆 GC 请求 08-19 19:19:58.685:调试/dalvikvm(4699):GC_EXPLICIT 在 106 毫秒内释放了 48 个对象/313440 个字节 08-19 19:20:01.015: INFO/ActivityManager(59): 进程 jp.co.omronsoft.openwnn (pid 4677) 已经死亡。 08-19 19:20:01.095:WARN/ActivityManager(59):计划在 5000 毫秒内重新启动崩溃的服务 jp.co.omronsoft.openwnn/.OpenWnnJAJP 08-19 19:20:01.106:INFO/ActivityManager(59):内存不足:没有更多的后台进程。 08-19 19:20:03.105: INFO/ActivityManager(59): 进程 com.wickeyware.zombiearcher.android (pid 4699) 已经死亡。 08-19 19:20:03.155: INFO/WindowManager(59): WIN DEATH: Window{46138b68 SurfaceView paused=false} 08-19 19:20:03.275: INFO/WindowManager(59): WIN DEATH: Window{4612d530 com.wickeyware.zombiearcher.android/com.wickeyware.zombiearcher.android.AndroidGame paused=false} 08-19 19:20:03.425:INFO/ActivityManager(59):为活动 com.android.launcher/com.android.launcher2.Launcher 启动 proc com.android.launcher:pid=4710 uid=10025 gids={} 08-19 19:20:03.425:INFO/ActivityManager(59):内存不足:没有更多的后台进程。 08-19 19:20:03.775:INFO/UsageStats(59):com.android.launcher 意外恢复,而 com.wickeyware.zombiearcher.android 已经恢复 08-19 19:20:03.904: INFO/ActivityThread(4710): 发布提供者 com.android.launcher2.settings: com.android.launcher2.LauncherProvider 08-19 19:20:04.005:调试/dalvikvm(4710):GC_EXTERNAL_ALLOC 在 58 毫秒内释放了 985 个对象/73440 个字节 08-19 19:20:04.465: WARN/InputManagerService(59): 收到 RemoteException 向 pid 4699 uid 10036 发送 setActive(false) 通知 08-19 19:20:04.984:INFO/ActivityManager(59):显示的活动 com.android.launcher/com.android.launcher2.Launcher:1703 毫秒(总共 20584 毫秒) 08-19 19:20:06.124:INFO/ActivityManager(59):为服务 jp.co.omronsoft.openwnn/.OpenWnnJAJP 启动 proc jp.co.omronsoft.openwnn:pid=4718 uid=10023 gids={}