Object-Creation Profiling
Unfortunately, the object-creation statistics available from the Sun JDK provide only very rudimentary information. Most profile tool vendors provide much better object-creation statistics, determining object numbers and identifying where particular objects are created in the code. My recommendation is to use a better (probably commercial) tool than the JDK profiler.
The heap-analysis tool (search http://www.java.sun.com for “HAT “), which can analyze the default profiling mode with Java 2, provides a little more information from the profiler output, but if you are relying on this, profiling object creation will require a lot of effort. To use this tool, you must use the binary output option to the profiling option:
java -Xrunhprof:format=b <classname>
I have used an alternate trick when a reasonable profiler is
unavailable, cannot be used, or does not provide precisely the detail
I need. This technique is to alter the
java.lang.Object
class to catch most nonarray
object-creation calls. This is not a supported feature, but it does
seem to work on most systems, because all constructors chain up to
the Object
class’s
constructor, and any explicitly created
nonarray object calls the constructor in Object
as
its first execution point after the VM allocates the object on the
heap. Objects that are created implicitly with a call to
clone( )
or by
deserialization do not call the
Object
class’s constructor, and so are
missed when using this technique.
Under the ...
Get Java Performance Tuning now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.