You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by Berin Loritsch <bl...@apache.org> on 2002/02/20 20:23:07 UTC

Re: [HEADS UP] Don't use -Xincgc with JDK 1.4

Berin Loritsch wrote:

> -Xprofile
>      Provides a very useful human readable dump of JVM activity.  Hats
>      off to the JDK 1.4 crew!


Here is the typical execution thread for ContainerManager code:

Flat profile of 27.64 secs (1402 total ticks): Latched_Thread_68

   Interpreted + native   Method
  78.7%     0  +   767    java.lang.Thread.yield
   0.4%     0  +     4    java.io.WinNTFileSystem.canonicalize
   0.1%     0  +     1    java.io.BufferedReader.<init>
  79.3%     0  +   772    Total interpreted

      Compiled + native   Method
   0.2%     2  +     0 
org.apache.avalon.excalibur.collections.BucketMap.getHash
   0.1%     1  +     0    java.net.URLStreamHandler.getHostAddress
   0.1%     1  +     0    java.lang.StringBuffer.expandCapacity
   0.1%     1  +     0    sun.nio.cs.UTF_8$Decoder.decodeArrayLoop
   0.5%     5  +     0    Total compiled

          Stub + native   Method
  19.1%     0  +   186    java.lang.Thread.yield
   0.4%     0  +     4    java.io.WinNTFileSystem.getBooleanAttributes
   0.2%     0  +     2    java.util.zip.ZipFile.getEntry
   0.2%     0  +     2    java.io.WinNTFileSystem.canonicalize
   0.1%     1  +     0    java.lang.ClassLoader.findLoadedClass
  20.0%     1  +   194    Total stub

   Thread-local ticks:
  30.5%   428             Blocked (of total)
   0.2%     2             Unknown: thread_state



Here is the typical execution thread for ECM code:

Flat profile of 194.59 secs (5729 total ticks): Latched_Thread_94

   Interpreted + native   Method
   0.1%     1  +     3 
org.apache.avalon.excalibur.pool.ResourceLimitingPool.get
   0.0%     1  +     0 
org.apache.avalon.excalibur.component.DefaultComponentFactory.decommission
   0.0%     1  +     0 
org.apache.avalon.excalibur.collections.BucketMap.put
   0.2%     3  +     3    Total interpreted

      Compiled + native   Method
   0.2%     6  +     0    java.lang.StringBuffer.expandCapacity
   0.1%     5  +     0    java.lang.StringBuffer.append
   0.1%     5  +     0    sun.nio.cs.StreamDecoder$CharsetSD.<init>
   0.1%     3  +     0    java.lang.StringBuffer.append
   0.1%     3  +     0    java.io.Win32FileSystem.normalize
   0.1%     3  +     0    java.io.BufferedReader.<init>
   0.1%     2  +     0    javax.xml.parsers.FactoryFinder.find
   0.1%     2  +     0    vtable chunks
   0.1%     2  +     0    java.lang.String.startsWith
   0.1%     2  +     0    sun.net.www.ParseUtil.canonizeString
   0.0%     0  +     1 
org.apache.avalon.framework.parameters.Parameters.getParameter
   0.0%     1  +     0    java.lang.StringBuffer.length
   0.0%     1  +     0    java.net.URL.hashCode
   0.0%     1  +     0    sun.misc.URLClassPath$4.getURL
   0.0%     1  +     0    sun.nio.cs.UTF_8.newDecoder
   0.0%     1  +     0    sun.net.www.protocol.file.FileURLConnection.<init>
   0.0%     1  +     0    sun.misc.Launcher$AppClassLoader.loadClass
   0.0%     1  +     0    javax.xml.parsers.SAXParserFactory.newInstance
   0.0%     1  +     0    java.util.HashMap.<init>
   0.0%     1  +     0    sun.net.www.protocol.jar.URLJarFile.getEntry
   0.0%     1  +     0    java.lang.String.getChars
   0.0%     1  +     0    java.lang.reflect.Constructor.newInstance
   0.0%     1  +     0    java.lang.String.equals
   0.0%     1  +     0    java.io.Win32FileSystem.prefixLength
   0.0%     1  +     0    java.util.zip.ZipFile.getEntry
   1.7%    60  +     1    Total compiled (including elided)

          Stub + native   Method
  91.1%     0  +  3264    java.lang.Thread.yield
   2.1%     0  +    75    java.io.WinNTFileSystem.canonicalize
   1.2%     0  +    42    java.io.WinNTFileSystem.getBooleanAttributes
   0.9%     0  +    31    java.util.zip.ZipFile.getEntry
   0.3%     0  +     9    java.lang.Throwable.fillInStackTrace
   0.1%     0  +     3    java.lang.Class.forName0
   0.1%     0  +     2    java.security.AccessController.doPrivileged
   0.1%     0  +     2    java.security.AccessController.doPrivileged
   0.1%     0  +     2    java.lang.ClassLoader.findLoadedClass
   0.0%     0  +     1    java.util.zip.ZipFile.read
   0.0%     1  +     0    java.util.zip.ZipFile.getSize
   0.0%     0  +     1    sun.reflect.Reflection.getClassAccessFlags
   0.0%     0  +     1    java.lang.Class.getComponentType
   0.0%     0  +     1    java.lang.reflect.Array.newArray
   0.0%     0  +     1    java.util.zip.ZipEntry.initFields
   0.0%     1  +     0    java.lang.Thread.currentThread
   0.0%     0  +     1    sun.reflect.Reflection.getCallerClass
  95.9%     2  +  3436    Total stub

   Runtime stub + native  Method
   0.0%     1  +     0    checkcast
   0.0%     1  +     0    Total runtime stubs

   Thread-local ticks:
  37.4%  2145             Blocked (of total)
   0.1%     3             Compilation
   0.2%     8             Unknown: running frame
   1.9%    67             Unknown: thread_state



As you can see, most of the time is spent in yield(), which is
OK.  We want a typical situation where multiple threads are 
interactively vying for the component instances.  There is *alot* less 
activity in ContainerManager than in ECM.  It would be interesting
to see how the execution plays out linearly.....



-- 

"They that give up essential liberty to obtain a little temporary safety
  deserve neither liberty nor safety."
                 - Benjamin Franklin


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>