[
https://issues.apache.org/jira/browse/JCLOUDS-1354?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16249771#comment-16249771
]
Andrea Turli commented on JCLOUDS-1354:
---------------------------------------
Thomas,
I think it would be great to avoid those memory leaks if possible, so a PR to
jclouds would be appreciated!
FWIW Excellent report for the issue!
Thanks
> JCE related memory leak with BouncyCastleCrypto
> -----------------------------------------------
>
> Key: JCLOUDS-1354
> URL: https://issues.apache.org/jira/browse/JCLOUDS-1354
> Project: jclouds
> Issue Type: Bug
> Components: jclouds-drivers
> Affects Versions: 2.0.0
> Reporter: Thomas de Grenier de Latour
>
> Each time a JCloud context involving {{BouncyCastleCrypto}} is created, a new
> instance of {{BouncyCastleProvider}} will be registered in JCE. It happens
> that these JCE Providers will never be garbage-collected, because
> {{JceSecurity}} keeps them all referenced in an {{IdentityMap}}. See
> [JDK-8168469|https://bugs.openjdk.java.net/browse/JDK-8168469].
> This memory leak can be completely insignificant in many applications where
> only very few JClouds contexts are ever created, but it can also become a
> real issue in applications which create many short-lived JClouds contexts (a
> single {{BouncyCastleProvider}} object retains ~700KB on the heap, so
> hundreds of them is hundreds of megabytes).
> An example of such a problematic application is Jenkins, with its
> "jclouds-plugin". See
> [JENKINS-47967|https://issues.jenkins-ci.org/browse/JENKINS-47967] for a
> detailed description of the issue in this context.
> As a workaround in this Jenkins plugin, I've proposed to stop relying on
> {{BouncyCastleCrypto}} (and thus on {{BouncyCastleCryptoModule}}), and to use
> instead an (otherwise similar) implementation of {{Crypto}} which always
> re-uses a single {{BouncyCastleProvider}} object. See
> [JenkinsBouncyCastleCrypto.java|https://github.com/jenkinsci/jclouds-plugin/blob/master/jclouds-plugin/src/main/java/jenkins/plugins/jclouds/modules/JenkinsBouncyCastleCrypto.java]
> I think the same could be done directly in JClouds (by applying similar
> change in {{BouncyCastleCrypto.java}}). If you think it's the right approach,
> then I can submit a PR.
> Note: bug detected in Jenkins with JClouds 2.0.0, which is not the latest
> release, but it looks like none of the JClouds code involved in this issue
> has been changed since then.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)