hotspot/src/share/vm/memory/heapInspection.cpp
changeset 2154 72a9b7284ccf
parent 2105 347008ce7984
parent 2141 e9a644aaff87
child 5402 c51fd0c1d005
equal deleted inserted replaced
2106:ec595a5e793e 2154:72a9b7284ccf
   231   }
   231   }
   232 
   232 
   233   size_t missed_count() { return _missed_count; }
   233   size_t missed_count() { return _missed_count; }
   234 };
   234 };
   235 
   235 
   236 void HeapInspection::heap_inspection(outputStream* st) {
   236 void HeapInspection::heap_inspection(outputStream* st, bool need_prologue) {
   237   ResourceMark rm;
   237   ResourceMark rm;
   238   HeapWord* ref;
   238   HeapWord* ref;
   239 
   239 
   240   CollectedHeap* heap = Universe::heap();
   240   CollectedHeap* heap = Universe::heap();
   241   bool is_shared_heap = false;
   241   bool is_shared_heap = false;
   242   switch (heap->kind()) {
   242   switch (heap->kind()) {
   243     case CollectedHeap::G1CollectedHeap:
   243     case CollectedHeap::G1CollectedHeap:
   244     case CollectedHeap::GenCollectedHeap: {
   244     case CollectedHeap::GenCollectedHeap: {
   245       is_shared_heap = true;
   245       is_shared_heap = true;
   246       SharedHeap* sh = (SharedHeap*)heap;
   246       SharedHeap* sh = (SharedHeap*)heap;
   247       sh->gc_prologue(false /* !full */); // get any necessary locks, etc.
   247       if (need_prologue) {
       
   248         sh->gc_prologue(false /* !full */); // get any necessary locks, etc.
       
   249       }
   248       ref = sh->perm_gen()->used_region().start();
   250       ref = sh->perm_gen()->used_region().start();
   249       break;
   251       break;
   250     }
   252     }
   251 #ifndef SERIALGC
   253 #ifndef SERIALGC
   252     case CollectedHeap::ParallelScavengeHeap: {
   254     case CollectedHeap::ParallelScavengeHeap: {
   288   } else {
   290   } else {
   289     st->print_cr("WARNING: Ran out of C-heap; histogram not generated");
   291     st->print_cr("WARNING: Ran out of C-heap; histogram not generated");
   290   }
   292   }
   291   st->flush();
   293   st->flush();
   292 
   294 
   293   if (is_shared_heap) {
   295   if (need_prologue && is_shared_heap) {
   294     SharedHeap* sh = (SharedHeap*)heap;
   296     SharedHeap* sh = (SharedHeap*)heap;
   295     sh->gc_epilogue(false /* !full */); // release all acquired locks, etc.
   297     sh->gc_epilogue(false /* !full */); // release all acquired locks, etc.
   296   }
   298   }
   297 }
   299 }
   298 
   300