The commented annotation in ClassLoader.java must be removed (line 268) // @GuardedBy("itself")
Stanimir On Fri, Oct 10, 2014 at 6:10 PM, Claes Redestad <claes.redes...@oracle.com> wrote: > Hi all, > > please review this patch which attempts to clean up synchronization and > improve scalability when > defining and getting java.lang.Package objects. > > webrev: http://cr.openjdk.java.net/~redestad/8060130/webrev.02/ > bug: https://bugs.openjdk.java.net/browse/JDK-8060130 > > Testing: jtreg, UTE vm.parallel_class_loading.testlist, various benchmarks > > Torturing the retrieval code with a simple microbenchmark[1] shows that > the existing code > could cause bottlenecks, but also that the proposed patch works slightly > faster even in > uncontended cases: > > Benchmark Mode Samples Score Score error > Units > baseline, 1 thread: > o.s.SimpleBench.getClassPackage thrpt 10 11.621 0.618 > ops/us > o.s.SimpleBench.getPackage thrpt 10 41.754 3.381 > ops/us > o.s.SimpleBench.getPackages thrpt 10 0.009 0.000 > ops/us > > baseline, 2 threads: > o.s.SimpleBench.getClassPackage thrpt 10 7.884 1.977 > ops/us > o.s.SimpleBench.getPackage thrpt 10 17.013 8.079 > ops/us > o.s.SimpleBench.getPackages thrpt 10 0.004 0.001 > ops/us > > patch applied, 1 thread: > o.s.SimpleBench.getClassPackage thrpt 10 13.519 0.170 > ops/us > o.s.SimpleBench.getPackage thrpt 10 59.999 0.988 > ops/us > o.s.SimpleBench.getPackages thrpt 10 0.019 0.001 > ops/us > > patch applied, 2 threads: > o.s.SimpleBench.getClassPackage thrpt 10 19.181 3.688 > ops/us > o.s.SimpleBench.getPackage thrpt 10 79.708 31.220 > ops/us > o.s.SimpleBench.getPackages thrpt 10 0.025 0.006 > ops/us > > /Claes > > [1] > package org.sample; > > import org.openjdk.jmh.annotations.*; > > @State(Scope.Thread) > public class SimpleBench { > > @Benchmark > public Package[] getPackages() { > return Package.getPackages(); > } > > @Benchmark > public Package getClassPackage() { > return this.getClass().getPackage(); > } > > @Benchmark > public Package getPackage() { > return Package.getPackage("java.util.zip"); > } > } > >