mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 19:14:38 +02:00
8057818: collect allocation context statistics at gc pauses
Reviewed-by: mikael, jmasa
This commit is contained in:
parent
0856ec5961
commit
40155ae18d
5 changed files with 19 additions and 1 deletions
|
@ -3334,6 +3334,7 @@ void ConcurrentMark::aggregate_count_data() {
|
|||
} else {
|
||||
g1_par_agg_task.work(0);
|
||||
}
|
||||
_g1h->allocation_context_stats().update_at_remark();
|
||||
}
|
||||
|
||||
// Clear the per-worker arrays used to store the per-region counting data
|
||||
|
|
|
@ -41,4 +41,11 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
class AllocationContextStats: public StackObj {
|
||||
public:
|
||||
inline void clear() { }
|
||||
inline void update(bool full_gc) { }
|
||||
inline void update_at_remark() { }
|
||||
};
|
||||
|
||||
#endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1ALLOCATIONCONTEXT_HPP
|
||||
|
|
|
@ -3596,7 +3596,7 @@ void G1CollectedHeap::gc_prologue(bool full /* Ignored */) {
|
|||
}
|
||||
}
|
||||
|
||||
void G1CollectedHeap::gc_epilogue(bool full /* Ignored */) {
|
||||
void G1CollectedHeap::gc_epilogue(bool full) {
|
||||
|
||||
if (G1SummarizeRSetStats &&
|
||||
(G1SummarizeRSetStatsPeriod > 0) &&
|
||||
|
@ -3613,6 +3613,7 @@ void G1CollectedHeap::gc_epilogue(bool full /* Ignored */) {
|
|||
// always_do_update_barrier = true;
|
||||
|
||||
resize_all_tlabs();
|
||||
allocation_context_stats().update(full);
|
||||
|
||||
// We have just completed a GC. Update the soft reference
|
||||
// policy with the new heap occupancy
|
||||
|
|
|
@ -263,6 +263,9 @@ private:
|
|||
// Class that handles the different kinds of allocations.
|
||||
G1Allocator* _allocator;
|
||||
|
||||
// Statistics for each allocation context
|
||||
AllocationContextStats _allocation_context_stats;
|
||||
|
||||
// PLAB sizing policy for survivors.
|
||||
PLABStats _survivor_plab_stats;
|
||||
|
||||
|
@ -657,6 +660,8 @@ public:
|
|||
// Determines PLAB size for a particular allocation purpose.
|
||||
size_t desired_plab_sz(GCAllocPurpose purpose);
|
||||
|
||||
inline AllocationContextStats& allocation_context_stats();
|
||||
|
||||
// Do anything common to GC's.
|
||||
virtual void gc_prologue(bool full);
|
||||
virtual void gc_epilogue(bool full);
|
||||
|
|
|
@ -37,6 +37,10 @@
|
|||
|
||||
// Inline functions for G1CollectedHeap
|
||||
|
||||
inline AllocationContextStats& G1CollectedHeap::allocation_context_stats() {
|
||||
return _allocation_context_stats;
|
||||
}
|
||||
|
||||
// Return the region with the given index. It assumes the index is valid.
|
||||
inline HeapRegion* G1CollectedHeap::region_at(uint index) const { return _hrm.at(index); }
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue