On Saturday 23 December 2006 04:09 Stefano Mazzocchi wrote: > Gregory Shimansky wrote: > > I was not aware that drlvm didn't generate MethodEnter/Exit events for > > native methods when I wrote this email. Now after applying HARMONY-2828 > > which fills this gap I've rerun my test agent and the top10 for most > > called methods to run hello world application has changed. The new top10 > > list looks like this: > > > > 157114 Ljava/io/ByteArrayOutputStream;.write(I)V > > 20093 Ljava/lang/Object;.<init>()V > > 13975 Ljava/lang/String;.hashCode()I > > 9301 Ljava/lang/Character;.toLowerCase(C)C > > 7842 Ljava/io/ByteArrayOutputStream;.size()I > > 7692 Ljava/lang/String;.<init>(II[C)V > > 6300 > > Ljava/lang/VMMemoryManager;.arrayCopy(Ljava/lang/Object;ILjava/lang/Objec > >t;II)V 6300 > > Ljava/lang/System;.arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V > > 6248 Ljava/lang/String;.length()I > > 6130 Ljava/lang/String;.substring(II)Ljava/lang/String; > > > > We seem to copy memory really too much... > > Not sure I get these results: assuming a "hello world" application reads > only, why is 80% of the time spent writing?
Most of the executed code in the table is what it takes for the system java class loader to find and load hello world application class. I think many of those java.io.ByteArrayOutputStream.write calls are used in JAR files manifest parser which writes to memory byte by byte. Maybe there are other places too. -- Gregory