我有一个运行 OOM 的应用程序,它有大量可用的可用堆空间,并且可以在现有的 Galaxy S3 上增长。该应用程序在其他设备上运行良好。
知道在传统 Java 中这可能是由永久代空间中的 OOM 引起的,我尝试研究 Dalvik 如何处理这个问题,但找不到任何确定的东西。Androids SDK 似乎缺少 MemoryUsage 和 ManagementFactory,所以我无法像在 Java 中那样得到它们。
我试图找出Android是否有永久代空间,我可以检查它的内容,我如何获得大小和空闲,Dalvik是否处理进入这个空间的东西不同于JVM,等等。
如果这个空间不存在或不太可能,也可以接受其他想法。
关于应用程序的一些信息。运行 OOM 的 S3 正在运行 4.1.2。该应用程序使用大约 12-25 MB 的堆,可用的最大堆大小约为 45 MB。它有很多本地资源图像,稍后会延迟加载更多。我正在 .recylce() 处理位图。该应用程序每次都在大致相同的位置崩溃。我仔细查看了崩溃点周围的代码,我没有看到任何不寻常的地方。其他设备运行此代码就好了。