MemorySweeper
Aggressive chunk unloading to prevent memory creep during exploration.
MemorySweeper forces distant chunks to unload immediately instead of waiting for vanilla’s slow ticket-expiry mechanism. Designed for large modpacks where exploration causes memory to climb and never come back down.
How It Works
Vanilla unloads ~4 chunks per second. When you explore, 20-30 new chunks load per second — the gap causes memory to rise indefinitely.
MemorySweeper hooks into ChunkMap.processUnloads() and:
1. Scans all loaded chunks every 0.5 seconds
2. Identifies chunks beyond view distance + 1
3. Pushes them directly into the pending-unload queue (bypassing ticket delays)
4. Raises the per-tick unload limit from 200 to 800
Exploration without MemorySweeper: 4,000-5,500 chunks loaded
Exploration with MemorySweeper: 2,200-2,800 chunks loaded (40-50% reduction)
Performance
● MSPT overhead: <1ms per scan
● No GC spikes, no tick stalling
● Compatible with all chunk-related mods (FTB Chunks, etc.)
Installation
1. Download the .jar from Releases or CurseForge / Modrinth
2. Place in mods/ folder
3. Requires Minecraft 1.20.1 + Forge 47.x
No dependencies. Works on both client (single player) and dedicated server.
Configuration
No configuration needed. Works out of the box. If you want to tune:
|
Parameter |
Default |
What it does |
|
Scan interval |
0.5s |
How often to scan for distant chunks |
|
Unload threshold |
view distance + 1 |
How close a chunk must be to stay loaded |
|
Batch size |
128 |
Max chunks added to unload queue per scan |
|
Unload limit |
200→800 |
Per-tick processing limit inside processUnloads |
Compatibility
Tested and safe with:
● FTB Chunks, FTB Quests
● Applied Energistics 2
● Mekanism
● Industrial Upgrade
● JEI, Jade, Spark
Building from Source
./gradlew build
Output: build/libs/memorysweeper_dev-<version>.jar
License
MIT — see LICENSE