comparison src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @ 3289:b52782ae3880

6946417: G1: Java VisualVM does not support G1 properly. Summary: Added counters for jstat Reviewed-by: tonyp, jwilhelm, stefank, ysr, johnc
author jmasa
date Thu, 21 Apr 2011 10:23:44 -0700
parents 49a67202bc67
children 063382f9b575
comparison
equal deleted inserted replaced
3288:c0dcda80820f 3289:b52782ae3880
26 #define SHARE_VM_GC_IMPLEMENTATION_G1_G1COLLECTEDHEAP_HPP 26 #define SHARE_VM_GC_IMPLEMENTATION_G1_G1COLLECTEDHEAP_HPP
27 27
28 #include "gc_implementation/g1/concurrentMark.hpp" 28 #include "gc_implementation/g1/concurrentMark.hpp"
29 #include "gc_implementation/g1/g1AllocRegion.hpp" 29 #include "gc_implementation/g1/g1AllocRegion.hpp"
30 #include "gc_implementation/g1/g1RemSet.hpp" 30 #include "gc_implementation/g1/g1RemSet.hpp"
31 #include "gc_implementation/g1/g1MonitoringSupport.hpp"
31 #include "gc_implementation/g1/heapRegionSets.hpp" 32 #include "gc_implementation/g1/heapRegionSets.hpp"
33 #include "gc_implementation/shared/hSpaceCounters.hpp"
32 #include "gc_implementation/parNew/parGCAllocBuffer.hpp" 34 #include "gc_implementation/parNew/parGCAllocBuffer.hpp"
33 #include "memory/barrierSet.hpp" 35 #include "memory/barrierSet.hpp"
34 #include "memory/memRegion.hpp" 36 #include "memory/memRegion.hpp"
35 #include "memory/sharedHeap.hpp" 37 #include "memory/sharedHeap.hpp"
36 38
55 class G1RemSet; 57 class G1RemSet;
56 class HeapRegionRemSetIterator; 58 class HeapRegionRemSetIterator;
57 class ConcurrentMark; 59 class ConcurrentMark;
58 class ConcurrentMarkThread; 60 class ConcurrentMarkThread;
59 class ConcurrentG1Refine; 61 class ConcurrentG1Refine;
62 class GenerationCounters;
60 63
61 typedef OverflowTaskQueue<StarTask> RefToScanQueue; 64 typedef OverflowTaskQueue<StarTask> RefToScanQueue;
62 typedef GenericTaskQueueSet<RefToScanQueue> RefToScanQueueSet; 65 typedef GenericTaskQueueSet<RefToScanQueue> RefToScanQueueSet;
63 66
64 typedef int RegionIdx_t; // needs to hold [ 0..max_regions() ) 67 typedef int RegionIdx_t; // needs to hold [ 0..max_regions() )
233 bool _retain_gc_alloc_region[GCAllocPurposeCount]; 236 bool _retain_gc_alloc_region[GCAllocPurposeCount];
234 237
235 // A list of the regions that have been set to be alloc regions in the 238 // A list of the regions that have been set to be alloc regions in the
236 // current collection. 239 // current collection.
237 HeapRegion* _gc_alloc_region_list; 240 HeapRegion* _gc_alloc_region_list;
241
242 // Helper for monitoring and management support.
243 G1MonitoringSupport* _g1mm;
238 244
239 // Determines PLAB size for a particular allocation purpose. 245 // Determines PLAB size for a particular allocation purpose.
240 static size_t desired_plab_sz(GCAllocPurpose purpose); 246 static size_t desired_plab_sz(GCAllocPurpose purpose);
241 247
242 // When called by par thread, requires the FreeList_lock to be held. 248 // When called by par thread, requires the FreeList_lock to be held.
548 // successful, perform the allocation and return the address of the 554 // successful, perform the allocation and return the address of the
549 // allocated block, or else "NULL". 555 // allocated block, or else "NULL".
550 HeapWord* expand_and_allocate(size_t word_size); 556 HeapWord* expand_and_allocate(size_t word_size);
551 557
552 public: 558 public:
559
560 G1MonitoringSupport* g1mm() { return _g1mm; }
561
553 // Expand the garbage-first heap by at least the given size (in bytes!). 562 // Expand the garbage-first heap by at least the given size (in bytes!).
554 // Returns true if the heap was expanded by the requested amount; 563 // Returns true if the heap was expanded by the requested amount;
555 // false otherwise. 564 // false otherwise.
556 // (Rounds up to a HeapRegion boundary.) 565 // (Rounds up to a HeapRegion boundary.)
557 bool expand(size_t expand_bytes); 566 bool expand(size_t expand_bytes);