作者:rebot | 分类:模组
Minecraft 版本: 1.20.4
平台: fabric
标签: optimization
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.
| 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 |
The mod uses a two-phase approach:
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.
请登录后举报
暂无评论,抢个沙发吧~