我与Galaxy Nexus上的应用用户遇到了问题。这是一个相当图形密集的游戏,基本上发生的是当他从活动切换到活动时,内存逐渐耗尽。
这是一款Galaxy Nexus(据我所知)推出Android 4.0.2。来自LogCat的摘录:
D/.GameViewActivity( 3203): debug. =================================
D/.GameViewActivity( 3203): debug.heap native: allocated 6.01MB of 8.95MB (0.04MB free) in [.GameViewActivity]
D/.GameViewActivity( 3203): debug.memory: allocated: 54.00MB of 64.00MB (14.00MB free)
D/dalvikvm( 3203): GC_EXPLICIT freed 366K, 28% free 40426K/55623K, paused 4ms+4ms
D/dalvikvm( 3203): GC_EXPLICIT freed 1K, 28% free 40425K/55623K, paused 1ms+4ms
不久之后(几分钟),它看起来像这样:
D/.MainActivity( 3203): debug. =================================
D/.MainActivity( 3203): debug.heap native: allocated 6.92MB of 11.36MB (0.18MB free) in [.MainActivity]
D/.MainActivity( 3203): debug.memory: allocated: 58.00MB of 64.00MB (1.00MB free)
D/dalvikvm( 3203): GC_EXPLICIT freed 297K, 4% free 58119K/60359K, paused 1ms+5ms
D/dalvikvm( 3203): GC_EXPLICIT freed 3K, 4% free 58116K/60359K, paused 1ms+5ms
I/WindowManager(17943): createSurface Window{41fadf88 .MainActivity paused=false}: DRAW NOW PENDING
D/OpenGLRenderer( 3203): Flushing caches (mode 0)
I/ActivityManager(17943): Displayed .MainActivity: +556ms (total +743ms)
D/dalvikvm(17943): GC_FOR_ALLOC freed 823K, 14% free 24118K/27911K, paused 86ms
D/.GameViewActivity( 3203): debug. =================================
D/.GameViewActivity( 3203): debug.heap native: allocated 6.95MB of 11.36MB (0.15MB free) in [.GameViewActivity]
D/.GameViewActivity( 3203): debug.memory: allocated: 58.00MB of 64.00MB (1.00MB free)
D/dalvikvm( 3203): GC_EXPLICIT freed 11K, 4% free 58488K/60359K, paused 2ms+5ms
D/dalvikvm( 3203): GC_EXPLICIT freed <1K, 4% free 58487K/60359K, paused 2ms+4ms
随后发生崩溃和内存不足。
现在,我已经习惯了Android无望的内存管理系统,导致我的游戏不可避免地崩溃(到目前为止 - 这是Android仪表板中报告最多的错误,并且我切断内存的严格程度并不重要在应用程序 - 图形+ Android内存管理=强制关闭)。我只使用Android组件+ SurfaceView,虽然使用自定义图形进行了大量皮肤/样式化。
然而,引起我注意的奇怪之处在于电话。
现在 - 首先 - 它是一款Galaxy Nexus,几乎是目前最先进的手机,其应用程序的内存最多。很奇怪,这款手机应该有这种问题。
其次,我有完全相同的手机 - 也运行4.0.2 - 我用它作为我的主要测试手机。我的用户可以在几分钟内让游戏崩溃;当我玩这个游戏时,它可以运行几个小时,并且一直有20-25Mb的内存空闲。
第三,这个应用程序每天运行成千上万的手机,所以我100%确定该应用不有任何问题应该导致我的用户是这种灾难性的内存泄漏看到。
简而言之 - 我完全彻底地难倒。
有什么想法?以前有人在这看过这样的东西吗? Galaxy Nexus是否存在我未曾听说过的已知问题?任何策略/问题/测试我可能会问这个用户可能有助于解决这个问题吗?
答案 0 :(得分:1)
如果用户有一些经验,也许他可以转储一个内存配置文件,这样你就可以查看分配。
有关说明,请参阅http://android-developers.blogspot.de/2011/03/memory-analysis-for-android.html。
您还可以尝试使用Debug#dumpHprofData()从应用中转储内存配置文件,并要求用户将该文件发送给您。