How iOS 12 Manages Memory on Low-RAM Devices

Apple designed iOS 12 with a strong emphasis on performance optimization, specifically targeting older hardware with 1GB to 2GB of RAM, such as the iPhone 5s and iPhone 6. This article breaks down how iOS 12 handles system resources through aggressive memory compression, tuned Jetsam policies, reduced daemon footprints, and efficient background task management to prevent out-of-memory crashes and maintain responsiveness.

Aggressive Memory Compression

Because iOS does not use a traditional disk swap file to preserve the longevity of flash storage, it relies on in-memory compression. In iOS 12, Apple refined the compression algorithms (such as WKdm) used by the kernel. When memory pressure increases, inactive memory pages allocated by apps are rapidly compressed in place rather than left uncompressed in RAM. This effectively doubles or triples the usable memory space for background apps without inducing storage I/O bottlenecks.

Refined Jetsam Prioritization

The memory manager in iOS, known as "Jetsam," acts as an operating-system-level watchdog that terminates processes when physical RAM reaches critical capacity. In iOS 12, Jetsam’s eviction thresholds were retuned:

  • Dynamic High-Water Marks: Jetsam dynamically lowers the maximum memory limit (high-water mark) for background services and inactive applications, freeing up space before the foreground app runs out of room.
  • Prioritized Kill Lists: When an out-of-memory (OOM) event occurs, Jetsam terminates idle system daemons and background tasks far earlier and more predictably, shielding the user-facing foreground application from sudden termination.

System Framework and Daemon Optimization

Prior to iOS 12, system-level services such as SpringBoard, Siri, and system extensions consumed a static baseline of RAM regardless of device capability. In iOS 12, Apple audited core frameworks to reduce memory footprints across the board:

  • Unused frameworks and extensions are unloaded more aggressively when not in active use.
  • Static memory allocations inside system daemons were reduced, leaving a larger portion of the 1GB RAM budget available for third-party software.
  • Cache sizes dynamically scale down based on the total physical memory detected at boot.

Faster State Restoration Over Process Retention

On low-RAM hardware, keeping dozens of apps suspended in live memory is physically impossible. iOS 12 addresses this by optimizing the speed of app launching and state restoration. When memory pressure forces an application to terminate, iOS 12 captures a lightweight state snapshot. When the user returns to the app, the optimized launch pipeline reloads the app from flash storage up to twice as fast as iOS 11, creating the illusion that the app stayed open in RAM while effectively avoiding memory-induced system freezes.

WebKit Memory Isolation

Web browsing often causes the highest memory spikes on mobile devices. iOS 12 implemented stricter memory throttling for WebKit processes. Safari tabs running in the background are suspended and their memory discarded much more rapidly on 1GB devices, preventing complex scripts or multimedia elements from exhausting physical RAM and crashing the browser or the home screen.