Description
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](https://www.curseforge.com/minecraft/modpacks/legends-reborn-medieval) modpack.