15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 package sun.jvm.hotspot.gc.g1;
26
27 import java.io.PrintStream;
28 import java.util.Iterator;
29 import java.util.Observable;
30 import java.util.Observer;
31
32 import sun.jvm.hotspot.debugger.Address;
33 import sun.jvm.hotspot.gc.shared.CollectedHeap;
34 import sun.jvm.hotspot.gc.shared.CollectedHeapName;
35 import sun.jvm.hotspot.gc.shared.SpaceClosure;
36 import sun.jvm.hotspot.gc.shared.PrintRegionClosure;
37 import sun.jvm.hotspot.memory.MemRegion;
38 import sun.jvm.hotspot.runtime.VM;
39 import sun.jvm.hotspot.runtime.VMObjectFactory;
40 import sun.jvm.hotspot.types.AddressField;
41 import sun.jvm.hotspot.types.CIntegerField;
42 import sun.jvm.hotspot.types.Type;
43 import sun.jvm.hotspot.types.TypeDataBase;
44 import sun.jvm.hotspot.tools.HeapSummary;
45
46 // Mirror class for G1CollectedHeap.
47
48 public class G1CollectedHeap extends CollectedHeap {
49 // HeapRegionManager _hrm;
50 static private AddressField hrmField;
51 // MemRegion _g1_reserved;
52 static private long g1ReservedFieldOffset;
53 // size_t _summary_bytes_used;
54 static private CIntegerField summaryBytesUsedField;
55 // G1MonitoringSupport* _g1mm;
56 static private AddressField g1mmField;
118 public HeapRegionSetBase humongousSet() {
119 Address humongousSetAddr = addr.addOffsetTo(humongousSetFieldOffset);
120 return (HeapRegionSetBase) VMObjectFactory.newObject(HeapRegionSetBase.class,
121 humongousSetAddr);
122 }
123
124 private Iterator<HeapRegion> heapRegionIterator() {
125 return hrm().heapRegionIterator();
126 }
127
128 public void heapRegionIterate(SpaceClosure scl) {
129 Iterator<HeapRegion> iter = heapRegionIterator();
130 while (iter.hasNext()) {
131 HeapRegion hr = iter.next();
132 scl.doSpace(hr);
133 }
134 }
135
136 public CollectedHeapName kind() {
137 return CollectedHeapName.G1;
138 }
139
140 @Override
141 public void printOn(PrintStream tty) {
142 MemRegion mr = reservedRegion();
143
144 tty.print("garbage-first heap");
145 tty.print(" [" + mr.start() + ", " + mr.end() + "]");
146 tty.println(" region size " + (HeapRegion.grainBytes() / 1024) + "K");
147
148 HeapSummary sum = new HeapSummary();
149 sum.printG1HeapSummary(this);
150 }
151
152 public void printRegionDetails(PrintStream tty) {
153 PrintRegionClosure prc = new PrintRegionClosure(tty);
154 heapRegionIterate(prc);
155 }
156
157 public G1CollectedHeap(Address addr) {
|
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 package sun.jvm.hotspot.gc.g1;
26
27 import java.io.PrintStream;
28 import java.util.Iterator;
29 import java.util.Observable;
30 import java.util.Observer;
31
32 import sun.jvm.hotspot.debugger.Address;
33 import sun.jvm.hotspot.gc.shared.CollectedHeap;
34 import sun.jvm.hotspot.gc.shared.CollectedHeapName;
35 import sun.jvm.hotspot.gc.shared.LiveRegionsClosure;
36 import sun.jvm.hotspot.gc.shared.PrintRegionClosure;
37 import sun.jvm.hotspot.gc.shared.SpaceClosure;
38 import sun.jvm.hotspot.memory.MemRegion;
39 import sun.jvm.hotspot.runtime.VM;
40 import sun.jvm.hotspot.runtime.VMObjectFactory;
41 import sun.jvm.hotspot.types.AddressField;
42 import sun.jvm.hotspot.types.CIntegerField;
43 import sun.jvm.hotspot.types.Type;
44 import sun.jvm.hotspot.types.TypeDataBase;
45 import sun.jvm.hotspot.tools.HeapSummary;
46
47 // Mirror class for G1CollectedHeap.
48
49 public class G1CollectedHeap extends CollectedHeap {
50 // HeapRegionManager _hrm;
51 static private AddressField hrmField;
52 // MemRegion _g1_reserved;
53 static private long g1ReservedFieldOffset;
54 // size_t _summary_bytes_used;
55 static private CIntegerField summaryBytesUsedField;
56 // G1MonitoringSupport* _g1mm;
57 static private AddressField g1mmField;
119 public HeapRegionSetBase humongousSet() {
120 Address humongousSetAddr = addr.addOffsetTo(humongousSetFieldOffset);
121 return (HeapRegionSetBase) VMObjectFactory.newObject(HeapRegionSetBase.class,
122 humongousSetAddr);
123 }
124
125 private Iterator<HeapRegion> heapRegionIterator() {
126 return hrm().heapRegionIterator();
127 }
128
129 public void heapRegionIterate(SpaceClosure scl) {
130 Iterator<HeapRegion> iter = heapRegionIterator();
131 while (iter.hasNext()) {
132 HeapRegion hr = iter.next();
133 scl.doSpace(hr);
134 }
135 }
136
137 public CollectedHeapName kind() {
138 return CollectedHeapName.G1;
139 }
140
141 @Override
142 public void liveRegionsIterate(LiveRegionsClosure closure) {
143 Iterator<HeapRegion> iter = heapRegionIterator();
144 while (iter.hasNext()) {
145 HeapRegion hr = iter.next();
146 closure.doLiveRegions(hr);
147 }
148 }
149
150 @Override
151 public void printOn(PrintStream tty) {
152 MemRegion mr = reservedRegion();
153
154 tty.print("garbage-first heap");
155 tty.print(" [" + mr.start() + ", " + mr.end() + "]");
156 tty.println(" region size " + (HeapRegion.grainBytes() / 1024) + "K");
157
158 HeapSummary sum = new HeapSummary();
159 sum.printG1HeapSummary(this);
160 }
161
162 public void printRegionDetails(PrintStream tty) {
163 PrintRegionClosure prc = new PrintRegionClosure(tty);
164 heapRegionIterate(prc);
165 }
166
167 public G1CollectedHeap(Address addr) {
|