Fix memory leak by caching UI fonts instead of allocating per frame#20
Open
virtualarchitectures wants to merge 4 commits into
Open
Fix memory leak by caching UI fonts instead of allocating per frame#20virtualarchitectures wants to merge 4 commits into
virtualarchitectures wants to merge 4 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix memory leak: cache UI fonts instead of allocating per frame
Project.drawUI() was calling mainApplet.createFont() on every frame. At 60 fps this creates over 3,600 font objects per minute which was holding resources that the garbage collector couldn't efficiently reclaim. This was causing memory to climb continuously until the system ran out, even in the empty example project.
The same pattern appeared in seven other methods (createSceneButtons, createScreenButtons, addSelectSceneButton, addSelectScreenButton, createAssignDisplayButtons, createMediaButtons, createGeneratorButtons), which each allocated a fresh font object on every call.
Changes:
NOTE: This pull request is built on top of and includes the UI updates in my other pull request #21. Apologies for not spotting this issue first. Even if you don't like the UI changes please do include the specific fixes for the memory leak in commit 80e4b61.
Before fix - Memory use rises steadily until crashing:

After fix - Memory use remains steady:
