.'" 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
 
