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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access