< prev index next >

src/hotspot/share/gc/g1/g1CollectedHeap.cpp

Print this page




  70 #include "gc/shared/gcBehaviours.hpp"
  71 #include "gc/shared/gcHeapSummary.hpp"
  72 #include "gc/shared/gcId.hpp"
  73 #include "gc/shared/gcLocker.hpp"
  74 #include "gc/shared/gcTimer.hpp"
  75 #include "gc/shared/gcTraceTime.inline.hpp"
  76 #include "gc/shared/generationSpec.hpp"
  77 #include "gc/shared/isGCActiveMark.hpp"
  78 #include "gc/shared/locationPrinter.inline.hpp"
  79 #include "gc/shared/oopStorageParState.hpp"
  80 #include "gc/shared/preservedMarks.inline.hpp"
  81 #include "gc/shared/suspendibleThreadSet.hpp"
  82 #include "gc/shared/referenceProcessor.inline.hpp"
  83 #include "gc/shared/taskTerminator.hpp"
  84 #include "gc/shared/taskqueue.inline.hpp"
  85 #include "gc/shared/weakProcessor.inline.hpp"
  86 #include "gc/shared/workerPolicy.hpp"
  87 #include "logging/log.hpp"
  88 #include "memory/allocation.hpp"
  89 #include "memory/iterator.hpp"

  90 #include "memory/resourceArea.hpp"
  91 #include "memory/universe.hpp"
  92 #include "oops/access.inline.hpp"
  93 #include "oops/compressedOops.inline.hpp"
  94 #include "oops/oop.inline.hpp"
  95 #include "runtime/atomic.hpp"
  96 #include "runtime/flags/flagSetting.hpp"
  97 #include "runtime/handles.inline.hpp"
  98 #include "runtime/init.hpp"
  99 #include "runtime/orderAccess.hpp"
 100 #include "runtime/threadSMR.hpp"
 101 #include "runtime/vmThread.hpp"
 102 #include "utilities/align.hpp"
 103 #include "utilities/bitMap.inline.hpp"
 104 #include "utilities/globalDefinitions.hpp"
 105 #include "utilities/stack.inline.hpp"
 106 
 107 size_t G1CollectedHeap::_humongous_object_threshold_in_words = 0;
 108 
 109 // INVARIANTS/NOTES


4996 void G1CollectedHeap::rebuild_strong_code_roots() {
4997   RebuildStrongCodeRootClosure blob_cl(this);
4998   CodeCache::blobs_do(&blob_cl);
4999 }
5000 
5001 void G1CollectedHeap::initialize_serviceability() {
5002   _g1mm->initialize_serviceability();
5003 }
5004 
5005 MemoryUsage G1CollectedHeap::memory_usage() {
5006   return _g1mm->memory_usage();
5007 }
5008 
5009 GrowableArray<GCMemoryManager*> G1CollectedHeap::memory_managers() {
5010   return _g1mm->memory_managers();
5011 }
5012 
5013 GrowableArray<MemoryPool*> G1CollectedHeap::memory_pools() {
5014   return _g1mm->memory_pools();
5015 }







































  70 #include "gc/shared/gcBehaviours.hpp"
  71 #include "gc/shared/gcHeapSummary.hpp"
  72 #include "gc/shared/gcId.hpp"
  73 #include "gc/shared/gcLocker.hpp"
  74 #include "gc/shared/gcTimer.hpp"
  75 #include "gc/shared/gcTraceTime.inline.hpp"
  76 #include "gc/shared/generationSpec.hpp"
  77 #include "gc/shared/isGCActiveMark.hpp"
  78 #include "gc/shared/locationPrinter.inline.hpp"
  79 #include "gc/shared/oopStorageParState.hpp"
  80 #include "gc/shared/preservedMarks.inline.hpp"
  81 #include "gc/shared/suspendibleThreadSet.hpp"
  82 #include "gc/shared/referenceProcessor.inline.hpp"
  83 #include "gc/shared/taskTerminator.hpp"
  84 #include "gc/shared/taskqueue.inline.hpp"
  85 #include "gc/shared/weakProcessor.inline.hpp"
  86 #include "gc/shared/workerPolicy.hpp"
  87 #include "logging/log.hpp"
  88 #include "memory/allocation.hpp"
  89 #include "memory/iterator.hpp"
  90 #include "memory/heapInspection.hpp"
  91 #include "memory/resourceArea.hpp"
  92 #include "memory/universe.hpp"
  93 #include "oops/access.inline.hpp"
  94 #include "oops/compressedOops.inline.hpp"
  95 #include "oops/oop.inline.hpp"
  96 #include "runtime/atomic.hpp"
  97 #include "runtime/flags/flagSetting.hpp"
  98 #include "runtime/handles.inline.hpp"
  99 #include "runtime/init.hpp"
 100 #include "runtime/orderAccess.hpp"
 101 #include "runtime/threadSMR.hpp"
 102 #include "runtime/vmThread.hpp"
 103 #include "utilities/align.hpp"
 104 #include "utilities/bitMap.inline.hpp"
 105 #include "utilities/globalDefinitions.hpp"
 106 #include "utilities/stack.inline.hpp"
 107 
 108 size_t G1CollectedHeap::_humongous_object_threshold_in_words = 0;
 109 
 110 // INVARIANTS/NOTES


4997 void G1CollectedHeap::rebuild_strong_code_roots() {
4998   RebuildStrongCodeRootClosure blob_cl(this);
4999   CodeCache::blobs_do(&blob_cl);
5000 }
5001 
5002 void G1CollectedHeap::initialize_serviceability() {
5003   _g1mm->initialize_serviceability();
5004 }
5005 
5006 MemoryUsage G1CollectedHeap::memory_usage() {
5007   return _g1mm->memory_usage();
5008 }
5009 
5010 GrowableArray<GCMemoryManager*> G1CollectedHeap::memory_managers() {
5011   return _g1mm->memory_managers();
5012 }
5013 
5014 GrowableArray<MemoryPool*> G1CollectedHeap::memory_pools() {
5015   return _g1mm->memory_pools();
5016 }
5017 
5018 class G1ParHeapInspectTask: public ParHeapInspectTask {
5019  private:
5020   HeapRegionClaimer _claimer;
5021  public:
5022   G1ParHeapInspectTask(G1CollectedHeap* heap, KlassInfoTable* shared_cit,
5023                      BoolObjectClosure* filter, size_t* shared_missed_count,
5024                      size_t thread_num) :
5025       ParHeapInspectTask(heap, shared_cit, filter, shared_missed_count, thread_num),
5026       _claimer(thread_num == 0 ? heap->workers()->active_workers() : thread_num) { }
5027   void do_object_iterate_parallel(ObjectClosure* cl, uint worker_id) {
5028     ((G1CollectedHeap*)getHeap())->object_iterate_parallel(cl, worker_id, &_claimer);
5029   }
5030 };
5031 
5032 bool G1CollectedHeap::run_par_heap_inspect_task(KlassInfoTable* cit,
5033                                                    BoolObjectClosure* filter,
5034                                                    size_t* missed_count, size_t thread_num) {
5035   G1ParHeapInspectTask task(this, cit, filter, missed_count, thread_num);
5036   return object_iterate_try_parallel(&task, thread_num) && task.is_success();
5037 }
5038 
5039 void G1CollectedHeap::object_iterate_parallel(ObjectClosure* cl, uint worker_id, HeapRegionClaimer* claimer) {
5040   IterateObjectClosureRegionClosure blk(cl);
5041   heap_region_par_iterate_from_worker_offset(&blk, claimer, worker_id);
5042 }
5043 
5044 bool G1CollectedHeap::object_iterate_try_parallel(AbstractGangTask* task, size_t par_thread_num) {
5045   if (task == NULL) {
5046     return false;
5047   }
5048   par_thread_num = MIN2((uint)par_thread_num, workers()->total_workers());
5049   workers()->run_task(task, par_thread_num);
5050   return true;
5051 }
5052 
5053 
< prev index next >