--- a/jdk/src/share/classes/java/lang/ClassLoader.java Mon Sep 14 17:47:26 2009 +0100
+++ b/jdk/src/share/classes/java/lang/ClassLoader.java Mon Sep 14 13:37:26 2009 -0700
@@ -380,6 +380,7 @@
// First, check if the class has already been loaded
Class c = findLoadedClass(name);
if (c == null) {
+ long t0 = System.nanoTime();
try {
if (parent != null) {
c = parent.loadClass(name, false);
@@ -394,7 +395,13 @@
if (c == null) {
// If still not found, then invoke findClass in order
// to find the class.
+ long t1 = System.nanoTime();
c = findClass(name);
+
+ // this is the defining class loader; record the stats
+ sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);
+ sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);
+ sun.misc.PerfCounter.getFindClasses().increment();
}
}
if (resolve) {