这发生在使用 Android 4.0.2 平台的自定义构建的嵌入式系统上。我看到我们的一个 android 活动应用程序增长到大约 400MB(调用“ps”时的 rss 大小)并被 Linux OOM 杀手杀死。android 平台配置为最大堆大小设置为 62M。我不知道 Dalvik VM 如何让活动增长到 400MB。
当堆达到大约 60MB 时,应用程序不应该让 Java 出现内存不足异常吗?我们在 logcat 日志或 anr 跟踪中看不到这些 Java 异常。
我们实现了一个示例活动,它按顺序分配字节数组并将每个字节设置为一个虚拟值。当活动分配大约 60MB 时,我们确实看到内存不足异常。
android中是否有不计入堆预算的分配路径?该活动呈现从网站下载的位图 png。
以下是我们平台上的“getprop”结果。
$ adb shell getprop | grep -i 堆
我很感激任何指示。
谢谢
编辑:注意:下面是 ps 输出。Pss 和 Uss 大约是 316M,远远高于。
PID Vss Rss Pss Uss cmdline logcat: hd[0]: pexecd(65): 982 351512K 351316K 326300K 316632K mytest.home^M logcat: hd[0]: pexecd(65): 660 679916K 61044K 57200K 56952K ./videngine^M RAM:总共 741764K,20320K 空闲,2148K 缓冲区,80104K 缓存,24964K shmem,10368K 平板