1

我在 Android 上使用 Crittercism 记录崩溃,但不幸的是它没有捕获所有崩溃。很多错过的崩溃都是OutOfMemoryExceptions,但并不是所有的OOM异常都被错过了。我无法弄清楚它什么时候被抓住,什么时候没有!任何人碰巧知道为什么会发生这种情况或解决方法?

4

1 回答 1

1

缺少内存不足异常的原因是 JVM 处理某些场景而不是其他场景的性质。

我没有 JVM 友好地掩盖的场景列表(即,不暴力杀死应用程序进程),但在这些情况下,Crittercism 可以正常运行并捕获 Java Out of Memory 异常。在 JVM 剧烈崩溃的另一种情况下,Crittercism 将难以捕获(但据我目前所知,没有崩溃报告器处理过这个问题)。

至于 OOM 之外的其他场景,这里有另外两个 Crash Reporters(不仅仅是 Crittercism)难以捕捉的场景:

App Not Responding 是另一种情况,即操作系统终止进程并且没有任何东西可以运行或完成。因此,崩溃记者无法捕捉到这一刻。

堆栈溢出是应用程序进入损坏状态并且操作系统终止进程的情况。虽然我不是 100% 在这种情况下。

话虽如此,在 Android 上,Crittercism 是少数提供远程 NDK 异常跟踪的公司之一,该跟踪将捕获 JVM 何时崩溃(即 Dalvik 本机异常/信号)。但正如我上面提到的,它没有 JVM 托管内存的优点,因此崩溃更加不稳定,OOM 会被遗漏。

希望这会有所帮助!

于 2014-07-17T05:34:59.610 回答