HPROF
is a tool to perform heap and cpu profiling. By using this tool, you can write
the profiling information either to a file or to a socket in ASCII or binary
format.
HelloWorld.java
What can you do using
HPROF tool?
a. Analyze CPU usage
b. Check heap allocation
statistics
c. Monitor contention profiles
d. Gives information
about state of all threads and monitors in the JVM
e. Since HPROF tool, reports complete heap dump information, you can get more information while
analyzing heap performance, lock contention, memory leaks etc.,
Get the list of
options available with HPROF tool
Open
command prompt and execute 'java -agentlib:hprof=help' command, it prints all
the options available with HPROF tool.
C:\>java -agentlib:hprof=help HPROF: Heap and CPU Profiling Agent (JVMTI Demonstration Code) hprof usage: java -agentlib:hprof=[help]|[<option>=<value>, ...] Option Name and Value Description Default --------------------- ----------- ------- heap=dump|sites|all heap profiling all cpu=samples|times|old CPU usage off monitor=y|n monitor contention n format=a|b text(txt) or binary output a file=<file> write data to file java.hprof[{.txt}] net=<host>:<port> send data over a socket off depth=<size> stack trace depth 4 interval=<ms> sample interval in ms 10 cutoff=<value> output cutoff point 0.0001 lineno=y|n line number in traces? y thread=y|n thread in traces? n doe=y|n dump on exit? y msa=y|n Solaris micro state accounting n force=y|n force output to <file> y verbose=y|n print messages about dumps y Obsolete Options ---------------- gc_okay=y|n Examples -------- - Get sample cpu information every 20 millisec, with a stack depth of 3: java -agentlib:hprof=cpu=samples,interval=20,depth=3 classname - Get heap usage information based on the allocation sites: java -agentlib:hprof=heap=sites classname Notes ----- - The option format=b cannot be used with monitor=y. - The option format=b cannot be used with cpu=old|times. - Use of the -Xrunhprof interface can still be used, e.g. java -Xrunhprof:[help]|[<option>=<value>, ...] will behave exactly the same as: java -agentlib:hprof=[help]|[<option>=<value>, ...] Warnings -------- - This is demonstration code for the JVMTI interface and use of BCI, it is not an official product or formal part of the JDK. - The -Xrunhprof interface will be removed in a future release. - The option format=b is considered experimental, this format may change in a future release.
How to invoke HPROF
tool?
Execute
below command to invoke hprof tool on given class.
java
-agentlib:hprof ClassName
public class HelloWorld { public static void main(String args[]) throws Exception { int count = 0; Thread t1 = new Thread() { public void run() { for(int i=0; i<5; i++){ try{ Thread.sleep(2000); }catch(Exception e){ } } } }; t1.start(); } }
Compile
HelloWorld.java.
Execute
HelloWorld application.
java
-classpath . -agentlib:hprof HelloWorld
C:\Users\krishna\Documents\Study\Miscellaneous>java -classpath . -agentlib:hprof HelloWorld Dumping Java heap ... allocation sites ... done.
After
execution of above command, you can see below two files.
java.hprof.txt
java.hprof.txt.TMP
Note: By default, heap
profiling information (sites and dump) is written out to java.hprof.txt (in
ASCII) in the current working directory.
Get the heap
allocation profile
Execute
below statement to get heap allocation profile information.
java
-agentlib:hprof=heap=sites ToBeProfiledClass
C:\Users\krishna\Documents\Study\Miscellaneous>java -classpath . -agentlib:hprof=heap=sites HelloWorld Dumping allocation sites ... done.
Get sample cpu
information every 20 millisec, with a stack depth of 3
java -agentlib:hprof=cpu=samples,interval=20,depth=3 classname
java -agentlib:hprof=cpu=samples,interval=20,depth=3 classname
C:\Users\krishna\Documents\Study\Miscellaneous>java -classpath . -agentlib:hprof=cpu=samples,interval=20,depth=3 HelloWorld Dumping CPU usage by sampling running threads ... done.
No comments:
Post a Comment