Releases: zwajton/OomAdjuster
OOM Adjusterer v11-5
v11.5 — WebUI, Two-Tier OOM Scoring & ART Management
See CHANGELOG.md for the full list. Highlights:
- WebUI via action button in KernelSU, APatch, Magisk (auto-installs KSU WebUI Standalone if needed)
- Apps tab — per-app tier toggle, suggested list, custom packages
- Device tab — live daemon status and per-app
oom_score_adj - ART tab — dynamic APEX version detection, smart uninstall with GMS service disables
- Two-tier OOM — Critical (-1000) and Restartable (-999), enforced by the native C daemon
- README rewritten with full WebUI and config documentation
⚠️ Magisk users: grant superuser when prompted during KSU WebUI Standalone install.
OOM Adjusterer v11
v11 — Native C OOM Guardian
The 100ms OOM-protection loop has been rewritten as a native C daemon (oom_guardian), statically compiled for arm64 and arm32. No extra modules or dependencies required — just flash and go.
What changed
oom_guardianruns permanently in memory and polls/procdirectly, replacing the shell loop that had to fork new processes every 100ms- Under memory pressure the shell loop could stall (slow fork, slow
pidof); the C daemon is unaffected - Shell loop is kept as an automatic fallback for unsupported architectures — no regression on older devices
- Fixed CRLF line ending issue that caused boot failure on zips built on Windows
Result: oom_score_adj adjustments are faster and more consistent, reducing the window where protected apps can be killed during heavy RAM pressure.
OOM Adjusterer v10.5
Full rewrite of service.sh: 448 lines → 185 lines
Replace 7 concurrent loops with 2 (OOM protection at 100ms, memory management at 10s) plus optional watchdog
Fix logging: use printf >> with no rotation or tmp_log race; first entry written with > to verify path on each boot
Replace config.json with config.conf (plain key=value, sourced directly — no grep/awk parsing required)
Single /proc/meminfo read per 10s cycle shared across all checks
LRU scanner now dynamically skips all protected_apps, not hardcoded
Remove malformed pm clear- commands from watchdog
Bump version to v10.5 / versionCode 105
OOM Adjusterer v10
What's Changed
- Git ignore by @zwajton in #1
- Update OOM Adjuster to v6 and add uninstall script by @zwajton in #2
- Fixed install issue and cleanup by @zwajton in #3
- Version 8, Critical fixes by @zwajton in #5
- Version 8 hotfix by @zwajton in #6
- Release v9: Add PoGo memory killer and PolygonX fixes by @zwajton in #7
- Add config options for watchdog and PoGo killer by @zwajton in #8
- Release v10: Remove phantom fix, protect apps from LRU, fix anti-kill… by @zwajton in #9
New Contributors
Full Changelog: https://github.com/zwajton/OomAdjuster/commits/v10
OOM Adjusterer v9.1
What's Changed
Version 9.1
- Configurable features: Enable/disable watchdog and phantom_fix.sh via config.json
- Customizable thresholds: Adjust Pokémon GO Memory killer values in config.json
- Config location: /data/adb/modules/oom_adjuster/config.json
New Contributors
Full Changelog: https://github.com/zwajton/OomAdjuster/commits/v9.1
OOM Adjusterer v9
What's Changed
- Release v9: Add PoGo memory killer and PolygonX fixes by @zwajton in #7
-
- Added Pokémon Go memory monitor - Automatically kills PoGo when memory usage exceeds thresholds (95% system RAM or 2800MB PoGo usage)
- Fixed PolygonX watchdog - Now reliably restarts after LMKD kills
- Removed Pokémon Go from the oom_score_adj and let PolygonX restart the process.
- More targeted approach - Focuses on root cause (PoGo memory leaks) instead of random app killing
Full Changelog: https://github.com/zwajton/OomAdjuster/commits/v9
OOM Adjusterer v8
Version 8
OOM Score Adjustment Fix:
- Fixed critical issue where
oom_score_adjadjustments were not being applied to protected processes - Now properly sets OOM score to -1000 for all protected apps, preventing them from being killed by the system
Process Priority Enhancement: - Renice operations now correctly apply -18 priority to protected processes
- Improved CPU scheduling for better performance of protected applications
Stability Improvements: - Resolved issues with process detection and priority application
- More reliable protection for Pokémon GO and companion applications
This version ensures that your protected apps maintain maximum system priority and are effectively shielded from out-of-memory killer mechanisms.
OOM Adjusterer v7
What's Changed
v7 - Fixes and Performance Improvements
This update introduces dynamic memory management and improves module stability.
- Dynamic Sleep Interval:
- Introduces a dynamic
sleep_intervalto make the module react faster to high memory usage (10 seconds instead of 30 seconds) by speeding up cache drops.
- Introduces a dynamic
- Faster OOM Adjustment:
- The main adjustment loop now runs five times faster (every 100ms) for more consistent application of process priorities.
- Safer Uninstallation:
- The uninstall script has been cleaned up, removing unsafe system calls (
cmd/pkill) to ensure a reliable uninstall process.
- The uninstall script has been cleaned up, removing unsafe system calls (
- Fixes: Resolved minor installation issues.
Full Changelog: https://github.com/zwajton/OomAdjuster/commits/v7
OOM Adjusterer v6
Hotfix
As of now it doesn't work to install the version 6 update, but it works upgrading from version 5 to version 6 using the update button in modules.
What's Changed
Removed Aerilate from the script
Added uninstall script
Decreased oom adjustment from 500 ms to 100 ms
Added updateJson to module.prop
New Contributors
Full Changelog: https://github.com/zwajton/OomAdjuster/commits/v6
OOM Adjusterer v5
Version 5
Added changelog.md
Added update.json
Version 4
• This Magisk module keeps important apps like PolygonX, Aerilate, and Pokémon GO safe from being terminated by Android's low memory killer (OOM).
• It continuously sets their oom_score_adj to -1000 and optionally applies legacy oom_adj if supported by the kernel.
• Boosts performance by increasing CPU scheduling priority (renice -18) for these apps.
• Includes a watchdog that automatically restarts PolygonX's foreground service if the app is killed or crashes.
• Features smart handling of Pokémon GO PID changes, pausing adjustments temporarily to avoid conflicts.
• Includes dynamic log rotation to maintain a lightweight, readable logfile.
📄 Logfile location: /data/adb/modules/oom_adjuster/oom_adjuster.log
• Memory Optimization (🆕 !)
• Drop_caches loop: Frees up system RAM every 30 seconds if memory is low.
• LRU memory deprioritizer: Scans Android’s Least Recently Used (LRU) process list and:
• • Force-stops CACHED_EMPTY apps (procState 19).
• • Sets oom_score_adj to 999 for less critical background processes (procState 14–18) to help LMK prioritize better.