Closed
Conversation
Closed
Contributor
Contributor
|
Here are the measurements (you can reproduce via #55) #54: #50: As you see, additional |
Contributor
Author
|
That's okay. I just wanted to keep this as an option. Thanks for the bechmark! |
Contributor
|
Will try another approach with Customizer/FieldTypeCustomizer classes: |
raphw
pushed a commit
that referenced
this pull request
Feb 4, 2016
To the best of my knowledge, this looks like a good solution given the bounds of the current implementation. I favour this solution over #54, it seems like the cleaner solution and it is benchmarked.
Member
|
This is fixed by #50. |
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.
The key object put in the cache may be an instance of a dynamically generated class that references an application classloader. That reference causes said classloader to not be available for garbage collection, thus leaking the PermGen with old classes when that classloader is not needed anymore. This is mostly experienced in application restart scenarios, where each application has its own classloader managed in a long-lived container.
Attached is an exceprt from a heap dump that shoes the reference to the classloader that causes the issue:
This is a rework of #49
Icludes the tests added in #50
The change is essentially flattening the key ised in the cache to a string, which contains the fully qualified types of the defined classes.