Optimization pass for better garbage collection #189
Merged
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.
This PR tries to do some optimization for better garbage collection, based on testing with VisuaVM.
WolfSSLInputStream/WolfSSLOutputStream
whenSSLSocket.close()
is called. This releases the internal references toWolfSSLSession
andWolfSSLSocket
to allow easier garbage collection of these Input/OutputStream objects.WolfSSLEngineHelper
state whenWolfSSLSocket.close()
is called, removing internal object references and allowing easier garbage collection.clientSNIRequested
andctx
to null insideWolfSSLSession
whenfreeSSL()
is called, potentially reducing the size ofWolfSSLSession
objects in memory until they are garbage collected.WolfSSLInternalVerifyCb
class. This is not needed and slows down garbage collection, since objects with finalizers are put in a different queue.close()
toWolfSSLServerSocket
which will close the underlyingWolfSSLSocket
if called and free up resources earlier than at garbage collection time.This PR also refactors
WolfSSLSession.useALPN()
at the JNI level to better guarantee ALPN list is null terminated.