[Patch] Java: Add heap dump and analyze support.

David Daney ddaney@avtrex.com
Wed Jan 17 23:47:00 GMT 2007


This patch adds the ability to dump the contents of the runtime heap to 
a file from a java program.  Also included is a program (gc-analyze) 
that analyzes the dump file and prints out a bunch of things about the 
state of the heap.

Documentation about how to use this feature is in the included 
gc-analyze documentation.

In addition to the usual machine generated files, all the .h and class 
files are machine generated so are also omitted from the attached patch.

Tested on x86_64-linux and i686-linux.

I will re-test on those platforms as well as a mipsel-linux cross 
compiler before committing.

Comments?

OK to commit?

gcc/java:
2007-01-17  David Daney  <ddaney@avtrex.com>

    * Make-lang.in (JAVA_MANFILES): Added doc/gc-analyze.1.
    (java.maintainer-clean):Added gc-analyze.1.
    (.INTERMEDIATE): Added gc-analyze.pod.
    (gc-analyze.pod): New rule.
    (java.install-man): Install gc-analyze.1
    * gcj.texi: Added new section for the gc-analyze program.

libjava:
2007-01-17  Johannes Schmidt  <jschmidt@avtrex.com>
    David Daney  <ddaney@avtrex.com>

    * configure.ac: Added check for /proc/self/maps.
    * Makefile.am (bin_PROGRAMS): Added gc-analyze.
    (gc_analyze_SOURCES): New.
    (gc_analyze_LDFLAGS): New.
    (gc_analyze_LINK): New.
    (gc_analyze_LDADD): New.
    (gc_analyze_DEPENDENCIES): New.
    (nat_source_files): Added gnu/gcj/util/natGCInfo.cc.
    * Makefile.in: Regenerated.
    * configure.ac: Regenerated.
    * include/config.h.in: Regenerated.
    * sources.am: Regenerated.
    * scripts/makemake.tcl: Don't include gc-analyze classes in libgcj.
    * gnu/gcj/tools/gc_analyze/MemoryAnalyze$SubstringComparator.h: New.
    * gnu/gcj/tools/gc_analyze/SymbolLookup.java: New.
    * gnu/gcj/tools/gc_analyze/BytePtr.h: New.
    * gnu/gcj/tools/gc_analyze/ItemList.h: New.
    * gnu/gcj/tools/gc_analyze/ToolPrefix.h: New.
    * gnu/gcj/tools/gc_analyze/MemoryAnalyze.h: New.
    * gnu/gcj/tools/gc_analyze/BlockMap$SizeKind.h: New.
    * gnu/gcj/tools/gc_analyze/ObjectMap.java: New.
    * gnu/gcj/tools/gc_analyze/SymbolLookup.h: New.
    * gnu/gcj/tools/gc_analyze/MemoryMap.java: New.
    * gnu/gcj/tools/gc_analyze/MemoryAnalyze$1$Info.h: New.
    * gnu/gcj/tools/gc_analyze/ObjectMap.h: New.
    * gnu/gcj/tools/gc_analyze/MemoryMap.h: New.
    * gnu/gcj/tools/gc_analyze/SymbolTable.java: New.
    * gnu/gcj/tools/gc_analyze/SymbolTable.h: New.
    * gnu/gcj/tools/gc_analyze/ObjectMap$ObjectItem.h: New.
    * gnu/gcj/tools/gc_analyze/MemoryMap$RangeComparator.h: New.
    * gnu/gcj/tools/gc_analyze/BlockMap$PtrMarks.h: New.
    * gnu/gcj/tools/gc_analyze/BlockMap.java: New.
    * gnu/gcj/tools/gc_analyze/BytePtr.java: New.
    * gnu/gcj/tools/gc_analyze/ItemList.java: New.
    * gnu/gcj/tools/gc_analyze/ToolPrefix.java: New.
    * gnu/gcj/tools/gc_analyze/MemoryAnalyze.java: New.
    * gnu/gcj/tools/gc_analyze/MemoryMap$Range.h: New.
    * gnu/gcj/tools/gc_analyze/BlockMap.h: New.
    * gnu/gcj/util/GCInfo.java: New.
    * gnu/gcj/util/GCInfo.h: New.
    * gnu/gcj/util/natGCInfo.cc: New.
    * classpath/lib/gnu/gcj/tools/gc_analyze/SymbolTable.class: New.
    * classpath/lib/gnu/gcj/tools/gc_analyze/ObjectMap$ObjectItem.class: 
New.
    * 
classpath/lib/gnu/gcj/tools/gc_analyze/MemoryMap$RangeComparator.class: New.
    * classpath/lib/gnu/gcj/tools/gc_analyze/BlockMap$PtrMarks.class: New.
    * classpath/lib/gnu/gcj/tools/gc_analyze/MemoryMap$Range.class: New.
    * classpath/lib/gnu/gcj/tools/gc_analyze/BlockMap.class: New.
    * classpath/lib/gnu/gcj/tools/gc_analyze/BytePtr.class: New.
    * 
classpath/lib/gnu/gcj/tools/gc_analyze/MemoryAnalyze$SubstringComparator.class: 
New.
    * classpath/lib/gnu/gcj/tools/gc_analyze/ItemList.class: New.
    * classpath/lib/gnu/gcj/tools/gc_analyze/ToolPrefix.class: New.
    * classpath/lib/gnu/gcj/tools/gc_analyze/MemoryAnalyze.class: New.
    * classpath/lib/gnu/gcj/tools/gc_analyze/BlockMap$SizeKind.class: New.
    * classpath/lib/gnu/gcj/tools/gc_analyze/SymbolLookup.class: New.
    * classpath/lib/gnu/gcj/tools/gc_analyze/MemoryAnalyze$1$Info.class: 
New.
    * classpath/lib/gnu/gcj/tools/gc_analyze/ObjectMap.class: New.
    * classpath/lib/gnu/gcj/tools/gc_analyze/MemoryMap.class: New.
    * classpath/lib/gnu/gcj/util/GCInfo.class: New.

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: gc-analyze.diff.txt
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20070117/d44a58f0/attachment.txt>


More information about the Gcc-patches mailing list