2014-07-16 3 views
1

저는 Android에서 사용 중이며 Crittercism을 사용하여 크래시를 로그하지만 불행히도 모든 크래시를 포착하지는 않습니다. 누락 된 많은 충돌은 OutOfMemoryException s이지만 모든 OOM 예외가 누락 된 것은 아닙니다. 나는 그것이 언제 붙잡 혔고 언제 안되는지에 관해 어떤 패턴이라도 이해할 수 없었다!! 누구나 이런 일이 발생하는 이유와 그 원인을 알 수 있습니까?크리티시 스틱이 크래시의 일부를 잡지 못합니다.

답변

1

Out of Memory 예외가 누락 된 이유는 특정 시나리오를 처리하는 JVM의 특성 때문입니다.

JVM이 양탄자 아래에서 친절하게 브러쉬 (즉, 앱 프로세스를 심하게 죽이지 않음)의 목록을 가지고 있지 않지만, 이러한 경우 Crittercism이 정상적으로 작동하고 Java Out of Memory 예외를 캡처 할 수 있습니다. JVM이 심하게 충돌하는 다른 경우에는 Crittercism이 캡처하는 데 어려움을 겪습니다 (그러나 크래시 기자가이 시점에서이 점을 처리하지 않습니다). OOM 넘어 다른 시나리오에 대해서는

, 여기에 두 사람은 시나리오있는 충돌 기자 (단지 Crittercism) 어려움 캡처가에 :

응용 프로그램이 응답하지

는 OS가 프로세스를 종료하고 다른 시나리오는 실행할 수 있습니다 아무것도 또는 완전한. 따라서 크래시 기자는이 순간을 포착 할 수 없습니다.

Stack Overflow은 앱이 손상된 상태가되어 OS가 프로세스를 종료하는 경우입니다. 이 시나리오에서는 100 % 아니지만.

안드로이드에서 Crittercism은 JVM이 충돌 할 때 캡처하는 원격 NDK 예외 추적을 제공하는 몇 안되는 중 하나입니다 (예 : Dalvik 기본 예외/신호). 그러나 위에서 언급했듯이 JVM이 관리하는 메모리의 정교함이 없기 때문에 충돌이 더욱 심해지므로 OOM을 놓칠 수 있습니다.

잘하면 도움이됩니다.