Android“mmap失败:内存不足”和大型APK

时间:2012-09-21 17:42:32

标签: android memory crash mmap

我的Android应用APK相当大,约为480 MB。我可以安装应用程序就好了但是在Android OS 2.2上启动应用程序时我得到了这个错误(在logcat中):

09-21 00:04:12.855: W/dalvikvm(3178): mmap(480331001, RO, FILE|SHARED, 28, 0) failed: Out of memory
09-21 00:04:12.855: W/dalvikvm(3178): Map of '/data/app/com.mycompany.myapp-1.apk' failed
09-21 00:04:12.855: D/AndroidRuntime(3178): Shutting down VM
09-21 00:04:12.855: W/dalvikvm(3178): threadid=1: thread exiting with uncaught exception (group=0x4001d828)
09-21 00:04:12.859: E/AndroidRuntime(3178): FATAL EXCEPTION: main
09-21 00:04:12.859: E/AndroidRuntime(3178): java.lang.RuntimeException: Unable to instantiate activity 
...

在OS 4.0+上不会发生这种情况。有些用户在2.3.4和2.3.7中报告启动崩溃,我怀疑是同样的问题。为什么mmap在我的APK上失败?

编辑:我知道应用程序非常庞大(这是一款拥有大量资源的游戏),Play商店将APK限制为50 MB,但这适用于其他国家/地区的运营商APK大小限制。我已经在Play商店中安装了一个版本的应用程序,其中大约20MB的APK使用了没有mmap问题的扩展文件。

1 个答案:

答案 0 :(得分:0)

只是猜测但是在第一次运行时尝试将文件复制到用户内存,然后从那里映射。