Howdy,
I am trying to use the Java 6 hotspot provider's object-alloc probe to
determine where objects are being allocated in an application. When I
use the attached DTrace script [1], I keep seeing unresolved symbols
and "couldn't find start" errors in the output:
libjvm.so`__1cNSharedRuntimeYdtrace_object_alloc_base6FpnGThread_pnHoopDesc__i_+0x7d
libjvm.so`__1cNSharedRuntimeTdtrace_object_alloc6FpnHoopDesc__i_+0x4f
libjvm.so`__1cNCollectedHeapbCpost_allocation_setup_common6FnLKlassHandle_pnIHeapWord_I_v_+0x121
libjvm.so`__1cOtypeArrayKlassIallocate6MipnGThread__pnQtypeArrayOopDesc__+0x19b
libjvm.so`__1cKoopFactoryNnew_typeArray6FnJBasicType_ipnGThread__pnQtypeArrayOopDesc__+0x2f
libjvm.so`__1cSInterpreterRuntimeInewarray6FpnKJavaThread_nJBasicType_i_v_+0x33
<couldn't find start>
java/nio/ByteBuffer.allocate(I)Ljava/nio/ByteBuffer;
sun/nio/cs/StreamDecoder.<init>(Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetDecoder;)V
sun/nio/cs/StreamDecoder.<init>(Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)V
sun/nio/cs/StreamDecoder.forInputStreamReader(Ljava/io/InputStream;Ljava/lang/Object;Ljava/lang/String;)Lsun/nio/cs/StreamDecoder;
0xfb402da7
0xfb402f0d
0xfb402f0d
0xfb402f0d
0xfb402da7
0xfb402da7
0xfb66e4d4
0xf7308980
4448736
Does anyone happen to know what is going on here? Without the method
names leading up to the actual allocations, it is somewhat difficult
to pinpoint who is keeping the garbage collector busy.
Thanks for any insight,
- Ryan
--
UNIX Administrator
http://prefetch.net
[1]
hotspot*:::object-alloc
/ copyinstr(arg1,arg2) == "[I" || copyinstr(arg1,arg2) == "[C" ||
copyinstr(arg1,arg2) == "[B" /
{
@stacks[jstack()] = sum(arg3);
}
profile:::tick-60s
{
printa(@stacks);
trunc(@stacks);
}
_______________________________________________
dtrace-discuss mailing list
[email protected]