Closed Chocohead closed 4 years ago
Fixed in pre3.
The fix seems to have worked for all the normal textures (using 1.16.2-OptFine_HD_U_G3), but ones with meta files are still leaving warnings in the logs:
Little bit of an oversight on my part from what leaks, it's the IResource
(MCP)/Resource
(Yarn) itself which should be closed to ensure both the actual resource InputStream
and meta file InputStream
(if it exists) are closed. I would think this only affects SpriteAtlasTexture#detectMinimumSpriteSize
as neither lang files nor the better grass config would need meta files. It would thus probably make most sense to just put res
in the try which would make the previous fix closing in
entirely optional:
try (Resource res = rm.getResource(locComplete)) {
...
} catch (Exception e) {
}
Also has the advantage of properly closing if an exception is throw, which the previous solution did not.
If you run the game with the debug logger turned on leaked resources that are loaded through
FallbackResourcemanager
(MCP)/NamespaceResourceManager
(Yarn) will be printed to the log. Doing so with Optifine reveals a couple of places whereInputStream
s are missed from being closed.Lang#loadLocaleData
doesn't closeis
, which handles adding OptiFine's translationsSpriteAtlasTexture#detectMinimumSpriteSize
doesn't closein
, which is passed every texture on the atlasBetterGrass#loadProperties
doesn't closein
, seems to be a copy-paste problem as the other very similarly structured code in the likes ofCustomItems
do close itOptiFine Version
1.16.2-OptFine_HD_U_G3_pre2
Sample Logs
All using Intermediary names but it's clear enough what's happening without recognising the class IDs
Translation loading
``` [Finalizer/WARN]: Leaked resource: 'minecraft:optifine/lang/en_us.lang' loaded from pack: 'Default' java.lang.Exception at net.minecraft.class_3294$class_3295.Texture Atlas Loading
``` [Finalizer/WARN]: Leaked resource: 'minecraft:textures/item/brick.png' loaded from pack: 'Default' java.lang.Exception at net.minecraft.class_3294$class_3295.Better Grass Config
``` [Finalizer/WARN]: Leaked resource: 'minecraft:optifine/bettergrass.properties' loaded from pack: 'Default' java.lang.Exception at net.minecraft.class_3294$class_3295.