208 } 209 210 private static String alignment = " "; 211 212 private void printGen(Generation gen) { 213 printValMB("capacity = ", gen.capacity()); 214 printValMB("used = ", gen.used()); 215 printValMB("free = ", gen.free()); 216 System.out.println(alignment + (double)gen.used() * 100.0 / gen.capacity() + "% used"); 217 } 218 219 private void printSpace(ContiguousSpace space) { 220 printValMB("capacity = ", space.capacity()); 221 printValMB("used = ", space.used()); 222 printValMB("free = ", space.free()); 223 System.out.println(alignment + (double)space.used() * 100.0 / space.capacity() + "% used"); 224 } 225 226 public void printG1HeapSummary(G1CollectedHeap g1h) { 227 G1MonitoringSupport g1mm = g1h.g1mm(); 228 long edenSpaceRegionNum = g1mm.edenSpaceRegionNum(); 229 long survivorSpaceRegionNum = g1mm.survivorSpaceRegionNum(); 230 HeapRegionSetBase oldSet = g1h.oldSet(); 231 HeapRegionSetBase archiveSet = g1h.archiveSet(); 232 HeapRegionSetBase humongousSet = g1h.humongousSet(); 233 long oldGenRegionNum = oldSet.length() + archiveSet.length() + humongousSet.length(); 234 printG1Space("G1 Heap:", g1h.n_regions(), 235 g1h.used(), g1h.capacity()); 236 System.out.println("G1 Young Generation:"); 237 printG1Space("Eden Space:", edenSpaceRegionNum, 238 g1mm.edenSpaceUsed(), g1mm.edenSpaceCommitted()); 239 printG1Space("Survivor Space:", survivorSpaceRegionNum, 240 g1mm.survivorSpaceUsed(), g1mm.survivorSpaceCommitted()); 241 printG1Space("G1 Old Generation:", oldGenRegionNum, 242 g1mm.oldGenUsed(), g1mm.oldGenCommitted()); 243 } 244 245 private void printG1Space(String spaceName, long regionNum, 246 long used, long capacity) { 247 long free = capacity - used; 248 System.out.println(spaceName); 249 printValue("regions = ", regionNum); 250 printValMB("capacity = ", capacity); 251 printValMB("used = ", used); 252 printValMB("free = ", free); 253 double occPerc = (capacity > 0) ? (double) used * 100.0 / capacity : 0.0; 254 System.out.println(alignment + occPerc + "% used"); 255 } 256 257 private static final double FACTOR = 1024*1024; 258 private void printValMB(String title, long value) { 259 if (value < 0) { 260 System.out.println(alignment + title + (value >>> 20) + " MB"); 261 } else { 262 double mb = value/FACTOR; | 208 } 209 210 private static String alignment = " "; 211 212 private void printGen(Generation gen) { 213 printValMB("capacity = ", gen.capacity()); 214 printValMB("used = ", gen.used()); 215 printValMB("free = ", gen.free()); 216 System.out.println(alignment + (double)gen.used() * 100.0 / gen.capacity() + "% used"); 217 } 218 219 private void printSpace(ContiguousSpace space) { 220 printValMB("capacity = ", space.capacity()); 221 printValMB("used = ", space.used()); 222 printValMB("free = ", space.free()); 223 System.out.println(alignment + (double)space.used() * 100.0 / space.capacity() + "% used"); 224 } 225 226 public void printG1HeapSummary(G1CollectedHeap g1h) { 227 G1MonitoringSupport g1mm = g1h.g1mm(); 228 printG1Space("G1 Heap:", g1h.n_regions(), g1h.used(), g1h.capacity()); 229 System.out.println("G1 Young Generation:"); 230 printG1Space("Eden Space:", g1mm.edenSpaceRegionNum(), 231 g1mm.edenSpaceUsed(), g1mm.edenSpaceCommitted()); 232 printG1Space("Survivor Space:", g1mm.survivorSpaceRegionNum(), 233 g1mm.survivorSpaceUsed(), g1mm.survivorSpaceCommitted()); 234 if (g1mm.useLegacyMonitoring()) { 235 printG1Space("G1 Old Generation:", g1mm.oldSpaceRegionNum(), 236 g1mm.oldSpaceUsed(), g1mm.oldSpaceCommitted()); 237 } else { 238 System.out.println("G1 Old Generation:"); 239 printG1Space("G1 Old Space:", g1mm.oldSpaceRegionNum(), 240 g1mm.oldSpaceUsed(), g1mm.oldSpaceCommitted()); 241 printG1Space("G1 Archive Space:", g1mm.archiveSpaceRegionNum(), 242 g1mm.archiveSpaceUsed(), g1mm.archiveSpaceCommitted()); 243 printG1Space("G1 Humongous Space:", g1mm.humongousSpaceRegionNum(), 244 g1mm.humongousSpaceUsed(), g1mm.humongousSpaceCommitted()); 245 } 246 } 247 248 private void printG1Space(String spaceName, long regionNum, 249 long used, long capacity) { 250 long free = capacity - used; 251 System.out.println(spaceName); 252 printValue("regions = ", regionNum); 253 printValMB("capacity = ", capacity); 254 printValMB("used = ", used); 255 printValMB("free = ", free); 256 double occPerc = (capacity > 0) ? (double) used * 100.0 / capacity : 0.0; 257 System.out.println(alignment + occPerc + "% used"); 258 } 259 260 private static final double FACTOR = 1024*1024; 261 private void printValMB(String title, long value) { 262 if (value < 0) { 263 System.out.println(alignment + title + (value >>> 20) + " MB"); 264 } else { 265 double mb = value/FACTOR; |