In previous blog posts we’ve discussed OOMs and how they are much more common than crashes. To recap, an OOM occurs whenever an app suddenly shuts down and doesn’t have time to send over information as to why the app closed. Although many app companies focus solely on crashes, OOMs feel exactly like crashes to the user and are roughly 5 times more common than crashes.
One of the common questions we get from app companies is what causes their apps to OOM. A host of factors can play a role in causing an app to shut down, including in-app characteristics such as CPU pegging, app memory usage, and broken screens, and out-of-app characteristics such as the device’s OS, hardware, or memory being used by other apps. These characteristics can have complex interactions with one another, and in many cases multiple factors can come together in causing an app to OOM, making the problem a difficult one to solve.
However, as Embrace collects more data from an ever-increasing number of apps, we’ve gained insight into patterns of behavior which lead to OOMs on iOS devices. And one of the patterns that we see again and again across apps has to do with time.
The longer an app has been in the “warm” state — that is, an app that’s either currently running in the foreground or sitting idle in the background, the more information the app accumulates. That information can include things like data-heavy images for an e-commerce app, complex network calls for a bidding app, or article details for a news app. If an app doesn’t properly handle this influx of information, it is more likely that the OS will get overloaded and shut down the app, causing an OOM. This chain of events is known as memory leaking.
As a kid I’d sometimes sprint from the beach into the ocean, trying to see if I could maintain my sprint even as I hit the waterline. But no matter how hard I tried, the water would always slow me to a crawl. That’s a bit like what happens when an app experiences memory leaking. The user may start off in the app at a run, but over time the user gets bogged down in deep water. To the user, that is a crash.
Embrace gives you the ability to visualize the user’s experience. That makes it possible to discover what happened before the ‘crash’. Try it out to see for yourself.