Quick answer: When a game fails (crashes, gets killed, or won't run) on low-memory devices, its memory footprint exceeds what those devices have. The fix is to reduce your memory usage to fit the low-memory target: use smaller textures and assets, load less at once (stream content on demand rather than holding everything), free what's not needed, and account for VRAM separately. Measure your footprint against the constrained device's budget and reduce until it fits.

Low-memory devices, budget phones, older hardware, memory-constrained consoles, are a real part of your audience, and a game that needs more memory than they have will crash, be killed by the OS, or fail to run on them. This is fundamentally a memory-budgeting problem: your game's footprint is larger than the device's budget, and the fix is to make the game fit.

Why Games Fail on Low-Memory Devices

Every device has a memory budget (how much your game can use), and it's much smaller on low-memory devices. A game whose memory footprint exceeds that budget fails there: it runs out of memory and crashes, gets terminated by the OS (mobile OSes kill apps that use too much memory), or can't load. The footprint that's fine on your development machine (with plenty of RAM) exceeds a budget phone's or an older device's much smaller budget. Causes of a too-large footprint: large/uncompressed assets and textures, loading too much at once (holding everything in memory rather than loading what's needed), not freeing unused memory, and ignoring VRAM limits.

So failing on low-memory devices means your footprint is over their budget. It's not a bug in the usual sense, it's a resource-budgeting mismatch between what the game uses and what the device has, concentrated on the devices with the least memory.

How to Diagnose It

Measure your game's memory footprint and compare it to the low-memory target's budget, if your usage exceeds what the device has, that's the problem. Profile memory to see what's consuming it (often textures/assets and loaded content). In the field, the signature is out-of-memory crashes (or OS kills) concentrated on low-memory devices, which confirms the budget is exceeded on that hardware.

Bugnet captures device context including memory information with crashes and groups them, so out-of-memory crashes correlated with low-memory devices surface as a clear pattern, confirming a budget problem on that hardware and telling you which devices (and how much memory) you need to fit. This points you to reduce the footprint to the constrained budget, and to profile for what's consuming the memory.

How to Fix It

Reduce your memory footprint to fit the low-memory budget. Reduce asset/texture memory, use smaller and compressed textures and assets (texture memory is often the biggest consumer), and provide lower-resolution assets for low-memory devices if needed. Load less at once, don't hold everything in memory, load only what's needed for the current experience and stream or load the rest on demand, freeing what's no longer needed (this is often the biggest win, the active footprint matters more than total content). Free unused memory, ensure you release memory you're done with (and fix any leaks, which make the footprint worse over time). Account for VRAM, fit graphics memory too, since low-memory devices have limited VRAM.

Set a memory budget for your low-memory target and reduce until the game fits it, then verify on actual low-memory devices (not just your high-RAM dev machine) that the game runs without out-of-memory failures, and confirm via field data that OOM crashes on those devices stop. Memory budgeting to fit the constrained devices, primarily by reducing assets and loading less at once, is what makes the game work across the low-memory hardware your audience includes.

Failing on low-memory devices means your footprint exceeds their budget. Reduce it, smaller textures, load less at once and stream the rest, account for VRAM, and test on real low-memory hardware.