Compatibility
Minecraft: Java Edition
1.21.x
1.20.x
1.19.x
1.18.2
Platforms
Creators
Details
Licensed ARR
Published 20 hours ago
Updated 3 weeks ago
Every time you travel between the Overworld, Nether, and End, your client creates a new ClientWorld. The old world should be garbage-collected, but several popular mods accidentally hold references to it - causing it to stay in memory forever.
After just a few dimension changes, this can eat 4-8 GB of RAM, leading to lag spikes, stuttering, and eventually crashes.
Dimension Leak Fix automatically detects dimension transitions and surgically breaks these retention chains, recovering 2-4 GB of memory per transition.
What it fixes
| Source | Problem | Impact |
|---|---|---|
| Entity references | Entities in the old world hold a .level field pointing back to it |
~200 MB per transition |
| Collective | BlockEntityData.cachedBlockEntities retains old worlds through nested WeakHashMaps |
~1.2 GB per transition |
| AmbientSounds | AirPocketScanner thread holds thousands of ChunkSections as a GC root | ~1.4 GB per transition |
| Create | Renderer caches hold references to old world data | Variable |
| Chunk storage | Old world's ChunkManager retains all loaded chunks in memory | ~1-3 GB per transition |
How it works
The mod uses a two-phase approach:
- Phase A (instant): When you change dimension, the mod immediately detaches entity references, flushes Collective caches, stops the AmbientSounds scanner thread, detaches Spark command senders, and invalidates Create's renderer.
- Phase B (3 seconds later): The mod clears the old world's chunk storage array and entity sets. This is delayed to avoid interfering with the renderer during the transition.
Compatibility
- Client-side only - does not need to be installed on the server
- Works with or without any of the mods listed above - the mod detects what's installed and only applies relevant fixes
- Tested with 200+ mods including Iris, Sodium, Distant Horizons, Create, Collective, AmbientSounds
Log output
The mod logs everything it does. Example output after a dimension change:
[DimensionLeakFix] Dimension change detected, cleaning up old world...
[DimensionLeakFix] Entities: 131 world references detached
[DimensionLeakFix] Collective: 1 cache(s) flushed in cachedBlockEntities
[DimensionLeakFix] AmbientSounds: scanner stopped (3 fields cleared)
[DimensionLeakFix] Create: renderer cache invalidated
[DimensionLeakFix] Phase A complete (137 operations)
[DimensionLeakFix] Phase B scheduled (3s delay)
[DimensionLeakFix] Phase B: releasing old world data...
[DimensionLeakFix] Chunks: 2809 slots released
[DimensionLeakFix] loadedChunks: 2809 entries cleared
[DimensionLeakFix] Phase B complete (2810 references released, ~3706 MB freed)
Used in the Legends Reborn: Medieval modpack.



