Review Request: JDK-8206240: java.lang.Class.newInstance() is causing caller to leak
Alan Bateman
Alan.Bateman at oracle.com
Wed Oct 3 13:02:16 UTC 2018
On 02/10/2018 20:33, Mandy Chung wrote:
> Class::newInstance maintains its separate cache of the caller
> class after access check. This leak has been there for a long
> time and unnoticed.
>
> This patch changes Class::newInstance to use the code path
> for Constructor::newInstance doing the access check and
> caching the caller class. It will also get the illegal
> access check in effect when Class::newInstance is called
> consistent with Constructor::newInstance.
>
> Webrev at:
> http://cr.openjdk.java.net/~mchung/jdk12/webrevs/8206240/webrev.00
>
> Alan raises a question whether the cache is still needed
> given that we have improved the performance of slow
> path of access check with Class::getPackageName. It's a
> good investigation to follow up.
The changes look okay. One niggle is Cache.callerClassCache as nothing
to do with Cache, maybe the method should be removed and the one usage
changed to create the weak ref.
On the benefit of the cache then I think it would be good to get some
data on the benefit. Prior to the JDK 9 then I think most of the cost
was checking the package but that has mostly disappeared with the
changes in 9.
-Alan
More information about the core-libs-dev
mailing list