mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-17 01:24:33 +02:00
8005849: JEP 167: Event-Based JVM Tracing
Co-authored-by: Karen Kinnear <karen.kinnear@oracle.com> Co-authored-by: Bengt Rutisson <bengt.rutisson@oracle.com> Co-authored-by: Calvin Cheung <calvin.cheung@oracle.com> Co-authored-by: Erik Gahlin <erik.gahlin@oracle.com> Co-authored-by: Erik Helin <erik.helin@oracle.com> Co-authored-by: Jesper Wilhelmsson <jesper.wilhelmsson@oracle.com> Co-authored-by: Keith McGuigan <keith.mcguigan@oracle.com> Co-authored-by: Mattias Tobiasson <mattias.tobiasson@oracle.com> Co-authored-by: Markus Gronlund <markus.gronlund@oracle.com> Co-authored-by: Mikael Auno <mikael.auno@oracle.com> Co-authored-by: Nils Eliasson <nils.eliasson@oracle.com> Co-authored-by: Nils Loodin <nils.loodin@oracle.com> Co-authored-by: Rickard Backman <rickard.backman@oracle.com> Co-authored-by: Stefan Karlsson <stefan.karlsson@oracle.com> Co-authored-by: Yekaterina Kantserova <yekaterina.kantserova@oracle.com> Reviewed-by: acorn, coleenp, sla
This commit is contained in:
parent
6b2c468c35
commit
718f3252f6
195 changed files with 7628 additions and 1484 deletions
|
@ -25,8 +25,10 @@
|
|||
#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CONCURRENTMARKSWEEPGENERATION_HPP
|
||||
#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CONCURRENTMARKSWEEPGENERATION_HPP
|
||||
|
||||
#include "gc_implementation/shared/gcHeapSummary.hpp"
|
||||
#include "gc_implementation/shared/gSpaceCounters.hpp"
|
||||
#include "gc_implementation/shared/gcStats.hpp"
|
||||
#include "gc_implementation/shared/gcWhen.hpp"
|
||||
#include "gc_implementation/shared/generationCounters.hpp"
|
||||
#include "memory/freeBlockDictionary.hpp"
|
||||
#include "memory/generation.hpp"
|
||||
|
@ -53,6 +55,8 @@
|
|||
class CMSAdaptiveSizePolicy;
|
||||
class CMSConcMarkingTask;
|
||||
class CMSGCAdaptivePolicyCounters;
|
||||
class CMSTracer;
|
||||
class ConcurrentGCTimer;
|
||||
class ConcurrentMarkSweepGeneration;
|
||||
class ConcurrentMarkSweepPolicy;
|
||||
class ConcurrentMarkSweepThread;
|
||||
|
@ -61,6 +65,7 @@ class FreeChunk;
|
|||
class PromotionInfo;
|
||||
class ScanMarkedObjectsAgainCarefullyClosure;
|
||||
class TenuredGeneration;
|
||||
class SerialOldTracer;
|
||||
|
||||
// A generic CMS bit map. It's the basis for both the CMS marking bit map
|
||||
// as well as for the mod union table (in each case only a subset of the
|
||||
|
@ -567,8 +572,9 @@ class CMSCollector: public CHeapObj<mtGC> {
|
|||
bool _completed_initialization;
|
||||
|
||||
// In support of ExplicitGCInvokesConcurrent
|
||||
static bool _full_gc_requested;
|
||||
unsigned int _collection_count_start;
|
||||
static bool _full_gc_requested;
|
||||
static GCCause::Cause _full_gc_cause;
|
||||
unsigned int _collection_count_start;
|
||||
|
||||
// Should we unload classes this concurrent cycle?
|
||||
bool _should_unload_classes;
|
||||
|
@ -609,6 +615,20 @@ class CMSCollector: public CHeapObj<mtGC> {
|
|||
AdaptivePaddedAverage _inter_sweep_estimate;
|
||||
AdaptivePaddedAverage _intra_sweep_estimate;
|
||||
|
||||
CMSTracer* _gc_tracer_cm;
|
||||
ConcurrentGCTimer* _gc_timer_cm;
|
||||
|
||||
bool _cms_start_registered;
|
||||
|
||||
GCHeapSummary _last_heap_summary;
|
||||
MetaspaceSummary _last_metaspace_summary;
|
||||
|
||||
void register_foreground_gc_start(GCCause::Cause cause);
|
||||
void register_gc_start(GCCause::Cause cause);
|
||||
void register_gc_end();
|
||||
void save_heap_summary();
|
||||
void report_heap_summary(GCWhen::Type when);
|
||||
|
||||
protected:
|
||||
ConcurrentMarkSweepGeneration* _cmsGen; // old gen (CMS)
|
||||
MemRegion _span; // span covering above two
|
||||
|
@ -827,6 +847,10 @@ class CMSCollector: public CHeapObj<mtGC> {
|
|||
void do_mark_sweep_work(bool clear_all_soft_refs,
|
||||
CollectorState first_state, bool should_start_over);
|
||||
|
||||
// Work methods for reporting concurrent mode interruption or failure
|
||||
bool is_external_interruption();
|
||||
void report_concurrent_mode_interruption();
|
||||
|
||||
// If the backgrould GC is active, acquire control from the background
|
||||
// GC and do the collection.
|
||||
void acquire_control_and_collect(bool full, bool clear_all_soft_refs);
|
||||
|
@ -876,11 +900,11 @@ class CMSCollector: public CHeapObj<mtGC> {
|
|||
bool clear_all_soft_refs,
|
||||
size_t size,
|
||||
bool tlab);
|
||||
void collect_in_background(bool clear_all_soft_refs);
|
||||
void collect_in_foreground(bool clear_all_soft_refs);
|
||||
void collect_in_background(bool clear_all_soft_refs, GCCause::Cause cause);
|
||||
void collect_in_foreground(bool clear_all_soft_refs, GCCause::Cause cause);
|
||||
|
||||
// In support of ExplicitGCInvokesConcurrent
|
||||
static void request_full_gc(unsigned int full_gc_count);
|
||||
static void request_full_gc(unsigned int full_gc_count, GCCause::Cause cause);
|
||||
// Should we unload classes in a particular concurrent cycle?
|
||||
bool should_unload_classes() const {
|
||||
return _should_unload_classes;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue