我在Android上并使用Crittercism来记录崩溃,但不幸的是它并没有捕获所有崩溃。许多错过的崩溃都是OutOfMemoryException
s,但并非所有OOM异常都被遗漏。我无法弄清楚它什么时候被抓住以及它什么时候都没有!有人碰巧知道为什么会发生这种情况或绕过它吗?
答案 0 :(得分:1)
缺少内存不足异常的原因是由于JVM处理某些场景与其他场景的性质。
我没有JVM在地毯下刷的场景列表(即,没有猛烈地杀死应用程序进程),但在这些情况下,Crittercism可以正常运行并捕获Java Out of Memory异常。在JVM猛烈崩溃的另一种情况下,Crittercism将难以捕获(但据我所知,目前还没有崩溃记者处理这个问题。)
对于OOM之外的其他场景,以下是另外两个场景,其中Crash Reporters(不仅仅是Crittercism)难以捕获:
应用程序无响应是操作系统终止进程并且无法运行或完成任何操作的另一种情况。因此,崩溃记者无法抓住这一时刻。
Stack Overflow是应用程序进入损坏状态并且操作系统终止进程的情况。虽然我不是100%在这种情况下。
话虽如此,Android Crittercism是提供远程NDK异常跟踪的少数几个之一,它将在JVM崩溃时捕获(即Dalvik本机异常/信号)。但正如我上面提到的那样,它没有JVM管理内存的细节,所以崩溃更加不稳定,OOM也会被遗漏。
希望这有帮助!