1
2
3
4
5
6
7
8
9
10
11
12
13
14 package net.sf.madmap;
15
16 import java.io.*;
17 import java.util.*;
18
19
20
21
22
23
24
25
26
27
28 public final class HprofObject extends HprofHeapAllocation {
29
30 short[] _member_name_indexes = null;
31
32 public HprofObject( long addr, String klass, HprofClassElement cls_addr, long size, int trace, ArrayList names, ArrayList objs ) {
33 super( addr, trace, cls_addr );
34
35 assert (( objs == null ) ? true : (( MadmapMain.getSaveMemberNames() ) ? names.size() == objs.size() : true)): "object members are messed up." ;
36 set_children( longArrayListtoLongArray( objs ) );
37 }
38
39 public long size() {
40 long objSize = class_addr().instanceSize();
41
42
43
44
45
46
47 return objSize;
48 }
49
50 public void set_member_name_indexes( short[] nmIdx) { _member_name_indexes = nmIdx; }
51
52 public String toString() {
53 StringBuffer p = new StringBuffer();
54
55 p.append( new String("OBJ " + Long.toHexString(addr()) + " (sz= " + size() + ", trace=" + getStackTrace() +
56 ", class=" + className() + "@" + Long.toHexString(class_addr().addr()) + ")"));
57
58 try {
59 if (children() != null) {
60 if ( MadmapMain.getSaveMemberNames() ) {
61 if ( (!(( children().length > 0 ) && ( _member_name_indexes != null ))) &&
62 (!(( children().length == 0 ) && ( _member_name_indexes == null ))) ) {
63 System.out.println("members are messed up:" );
64 System.out.println( "k.name() = " + class_addr().className() + " -- this classname() = " + className() );
65 System.out.println(" _member_refs.length = " + children().length );
66 System.out.println(" _member_name_indexes.length = " + _member_name_indexes.length );
67 }
68 }
69
70 for (int i = 0 ; i < children().length; i++ ) {
71 p.append("\n");
72 Long id = (Long) children()[ i ];
73 String name = "";
74 if ( MadmapMain.getSaveMemberNames() ) {
75 name = (String) class_addr().nonstatic_field_names().get( _member_name_indexes[i] );
76 }
77 p.append( new String(" " + name + "\t" + Long.toHexString( id )));
78 }
79 }
80 } catch ( Exception e ) {
81 System.out.println( "Exception " + e );
82
83
84
85 e.printStackTrace();
86 System.exit( -1 );
87 }
88
89 return p.toString();
90 }
91 }