.'" t
." Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
."
." This code is free software; you can redistribute it and/or modify it
." under the terms of the GNU General Public License version 2 only, as
." published by the Free Software Foundation.
."
." This code is distributed in the hope that it will be useful, but WITHOUT
." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
." FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
." version 2 for more details (a copy is included in the LICENSE file that
." accompanied this code).
."
." You should have received a copy of the GNU General Public License version
." 2 along with this work; if not, write to the Free Software Foundation,
." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
."
." Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
." CA 95054 USA or visit www.sun.com if you need additional information or
." have any questions.
." ` 
.TH jhat 1 "05 Aug 2006"
." Generated by html2roff

.LP
.SH NAME
jhat \- Java Heap Analysis Tool
.LP
.SH "SYNOPSIS"
.LP

.LP
.nf
\f3
.fl
\fP\f3jhat\fP [ \f2options\fP ] <heap\-dump\-file>
.fl

.fl
.fi

.LP
.SH "PARAMETERS"
.LP

.LP
.TP 3
options 
Options, if used, should follow immediately after the command name. 
.TP 3
heap\-dump\-file 
Java binary heap dump file to be browsed. For a dump file that contains multiple heap dumps, you may specify which dump in the file by appending "#<number> to the file name, i.e. "foo.hprof#3". 
.LP
.SH "DESCRIPTION"
.LP

.LP
.LP
The \f3jhat\fP command parses a java heap dump file and launches a webserver. jhat enables you to browse heap dumps using your favorite webbrowser. jhat supports pre\-designed queries (such as 'show all instances of a known class "Foo"') as well as \f3OQL\fP (\f3O\fPbject \f3Q\fPuery \f3L\fPanguage) \- a SQL\-like query language to query heap dumps. Help on OQL is available from the OQL help page shown by jhat. With the default port, OQL help is available at http://localhost:7000/oqlhelp/
.LP
.LP
There are several ways to generate a java heap dump:
.LP
.RS 3
.TP 2
*
Use jmap \-dump option to obtain a heap dump at runtime; 
.TP 2
*
Use jconsole option to obtain a heap dump via 
.na
\f2HotSpotDiagnosticMXBean\fP @
.fi
http://java.sun.com/javase/6/docs/jre/api/management/extension/com/sun/management/HotSpotDiagnosticsMXBean.html at runtime; 
.TP 2
*
Heap dump will be generated when OutOfMemoryError is thrown by specifying \-XX:+HeapDumpOnOutOfMemoryError VM option; 
.TP 2
*
Use 
.na
\f2hprof\fP @
.fi
http://java.sun.com/developer/technicalArticles/Programming/HPROF.html. 
.RE

.LP
.LP
\f3NOTE:\fP This tool is \f3experimental\fP and may \f3not\fP be available in future versions of the JDK.
.LP
.SH "OPTIONS"
.LP

.LP
.TP 3
\-stack false/true 
Turn off tracking object allocation call stack. Note that if allocation site information is not available in the heap dump, you have to set this flag to false. Default is true. 
.TP 3
\-refs false/true 
Turn off tracking of references to objects. Default is true. By default, back pointers (objects pointing to a given object a.k.a referrers or in\-coming references) are calculated for all objects in the heap. 
.TP 3
\-port port\-number 
Set the port for the jhat's HTTP server. Default is 7000. 
.TP 3
\-exclude exclude\-file 
Specify a file that lists data members that should be excluded from the "reachable objects" query. For example, if the file lists \f2java.lang.String.value\fP, then, whenever list of objects reachable from a specific object "o" are calculated, reference paths involving \f2java.lang.String.value\fP field will not considered. 
.TP 3
\-baseline baseline\-dump\-file 
Specify a baseline heap dump. Objects in both heap dumps with the same object ID will be marked as not being "new". Other objects will be marked as "new". This is useful while comparing two different heap dumps. 
.TP 3
\-debug int 
Set debug level for this tool. 0 means no debug output. Set higher values for more verbose modes. 
.TP 3
\-version\  
Report version number and exit. 
.TP 3
\-h\  
Output help message and exit. 
.TP 3
\-help\  
Output help message and exit. 
.TP 3
\-J<flag>\  
Pass <flag> to the Java virtual machine on which jhat is run. For example, \-J\-Xmx512m to use a maximum heap size of 512MB. 
.LP
.SH "SEE ALSO"
.LP
.RS 3
.TP 2
*
jmap \- Java Memory Map 
.TP 2
*
jconsole \- Java Monitoring and Management Console 
.TP 2
*
.na
\f2hprof \- Heap and CPU profiling tool\fP @
.fi
http://java.sun.com/developer/technicalArticles/Programming/HPROF.html 
.RE

.LP

.LP
 
