V8 Project
|
#include <gc-tracer.h>
Classes | |
class | AllocationEvent |
class | Event |
class | Scope |
Public Types | |
typedef RingBuffer< Event, kRingBufferMaxSize > | EventBuffer |
typedef RingBuffer< AllocationEvent, kRingBufferMaxSize > | AllocationEventBuffer |
Public Member Functions | |
GCTracer (Heap *heap) | |
void | Start (GarbageCollector collector, const char *gc_reason, const char *collector_reason) |
void | Stop () |
void | AddNewSpaceAllocationTime (double duration, intptr_t allocation_in_bytes) |
void | AddIncrementalMarkingStep (double duration, intptr_t bytes) |
void | AddMarkingTime (double duration) |
double | cumulative_marking_duration () const |
void | AddSweepingTime (double duration) |
double | cumulative_sweeping_duration () const |
double | MeanScavengerDuration () const |
double | MaxScavengerDuration () const |
double | MeanMarkCompactorDuration () const |
double | MaxMarkCompactorDuration () const |
double | MeanIncrementalMarkingDuration () const |
double | MaxIncrementalMarkingDuration () const |
intptr_t | IncrementalMarkingSpeedInBytesPerMillisecond () const |
intptr_t | ScavengeSpeedInBytesPerMillisecond () const |
intptr_t | MarkCompactSpeedInBytesPerMillisecond () const |
intptr_t | NewSpaceAllocationThroughputInBytesPerMillisecond () const |
Static Public Attributes | |
static const int | kRingBufferMaxSize = 10 |
Private Member Functions | |
void | PrintNVP () const |
void | Print () const |
double | MeanDuration (const EventBuffer &events) const |
double | MaxDuration (const EventBuffer &events) const |
DISALLOW_COPY_AND_ASSIGN (GCTracer) | |
Definition at line 86 of file gc-tracer.h.
typedef RingBuffer<AllocationEvent, kRingBufferMaxSize> v8::internal::GCTracer::AllocationEventBuffer |
Definition at line 242 of file gc-tracer.h.
Definition at line 240 of file gc-tracer.h.
|
explicit |
Definition at line 82 of file gc-tracer.cc.
References current_, v8::internal::GCTracer::Event::end_time, NULL, previous_, previous_mark_compactor_event_, v8::internal::GCTracer::Event::START, and v8::base::OS::TimeCurrentMillis().
void v8::internal::GCTracer::AddIncrementalMarkingStep | ( | double | duration, |
intptr_t | bytes | ||
) |
Definition at line 210 of file gc-tracer.cc.
References cumulative_incremental_marking_bytes_, cumulative_incremental_marking_duration_, cumulative_incremental_marking_steps_, cumulative_marking_duration_, cumulative_pure_incremental_marking_duration_, longest_incremental_marking_step_, and v8::internal::Max().
Referenced by v8::internal::IncrementalMarking::Step().
|
inline |
Definition at line 260 of file gc-tracer.h.
References cumulative_marking_duration_.
Referenced by v8::internal::IncrementalMarking::Hurry(), and v8::internal::MarkCompactCollector::MarkLiveObjects().
void v8::internal::GCTracer::AddNewSpaceAllocationTime | ( | double | duration, |
intptr_t | allocation_in_bytes | ||
) |
Definition at line 204 of file gc-tracer.cc.
References allocation_events_, and v8::internal::RingBuffer< T, MAX_SIZE >::push_front().
Referenced by Start().
|
inline |
Definition at line 270 of file gc-tracer.h.
References cumulative_sweeping_duration_.
Referenced by v8::internal::MarkCompactCollector::SweepSpaces().
|
inline |
Definition at line 265 of file gc-tracer.h.
References cumulative_marking_duration_.
|
inline |
Definition at line 275 of file gc-tracer.h.
References cumulative_sweeping_duration_.
Referenced by v8::internal::Heap::TearDown().
|
private |
intptr_t v8::internal::GCTracer::IncrementalMarkingSpeedInBytesPerMillisecond | ( | ) | const |
Definition at line 407 of file gc-tracer.cc.
References v8::internal::RingBuffer< T, MAX_SIZE >::begin(), cumulative_incremental_marking_bytes_, cumulative_incremental_marking_duration_, cumulative_pure_incremental_marking_duration_, v8::internal::RingBuffer< T, MAX_SIZE >::empty(), v8::internal::RingBuffer< T, MAX_SIZE >::end(), and mark_compactor_events_.
Referenced by v8::internal::Heap::IdleNotification(), and PrintNVP().
intptr_t v8::internal::GCTracer::MarkCompactSpeedInBytesPerMillisecond | ( | ) | const |
Definition at line 448 of file gc-tracer.cc.
References v8::internal::RingBuffer< T, MAX_SIZE >::begin(), v8::internal::RingBuffer< T, MAX_SIZE >::end(), and mark_compactor_events_.
Referenced by v8::internal::Heap::IdleNotification().
|
private |
Definition at line 354 of file gc-tracer.cc.
References v8::internal::RingBuffer< T, MAX_SIZE >::begin(), v8::internal::RingBuffer< T, MAX_SIZE >::empty(), v8::internal::RingBuffer< T, MAX_SIZE >::end(), and v8::internal::Max().
Referenced by MaxMarkCompactorDuration(), and MaxScavengerDuration().
double v8::internal::GCTracer::MaxIncrementalMarkingDuration | ( | ) | const |
Definition at line 393 of file gc-tracer.cc.
References v8::internal::RingBuffer< T, MAX_SIZE >::begin(), v8::internal::RingBuffer< T, MAX_SIZE >::empty(), v8::internal::RingBuffer< T, MAX_SIZE >::end(), longest_incremental_marking_step_, mark_compactor_events_, and v8::internal::Max().
|
inline |
Definition at line 297 of file gc-tracer.h.
References mark_compactor_events_, and MaxDuration().
|
inline |
Definition at line 287 of file gc-tracer.h.
References MaxDuration(), and scavenger_events_.
|
private |
Definition at line 340 of file gc-tracer.cc.
References v8::internal::RingBuffer< T, MAX_SIZE >::begin(), v8::internal::RingBuffer< T, MAX_SIZE >::empty(), v8::internal::RingBuffer< T, MAX_SIZE >::end(), and v8::internal::RingBuffer< T, MAX_SIZE >::size().
Referenced by MeanMarkCompactorDuration(), and MeanScavengerDuration().
double v8::internal::GCTracer::MeanIncrementalMarkingDuration | ( | ) | const |
Definition at line 368 of file gc-tracer.cc.
References v8::internal::RingBuffer< T, MAX_SIZE >::begin(), cumulative_incremental_marking_duration_, cumulative_incremental_marking_steps_, v8::internal::RingBuffer< T, MAX_SIZE >::empty(), v8::internal::RingBuffer< T, MAX_SIZE >::end(), and mark_compactor_events_.
|
inline |
Definition at line 291 of file gc-tracer.h.
References mark_compactor_events_, and MeanDuration().
|
inline |
Definition at line 281 of file gc-tracer.h.
References MeanDuration(), and scavenger_events_.
intptr_t v8::internal::GCTracer::NewSpaceAllocationThroughputInBytesPerMillisecond | ( | ) | const |
Definition at line 465 of file gc-tracer.cc.
References allocation_events_, v8::internal::RingBuffer< T, MAX_SIZE >::begin(), and v8::internal::RingBuffer< T, MAX_SIZE >::end().
Referenced by v8::internal::Heap::IdleNotification(), and PrintNVP().
|
private |
Definition at line 223 of file gc-tracer.cc.
References v8::internal::GCTracer::Event::collector_reason, current_, v8::internal::GCTracer::Event::end_memory_size, v8::internal::GCTracer::Event::end_object_size, v8::internal::GCTracer::Event::end_time, v8::internal::GCTracer::Scope::EXTERNAL, v8::internal::GCTracer::Event::gc_reason, heap_, v8::internal::GCTracer::Event::incremental_marking_duration, v8::internal::GCTracer::Event::incremental_marking_steps, v8::internal::Heap::isolate(), v8::internal::GCTracer::Event::longest_incremental_marking_step, v8::internal::MB, NULL, v8::internal::PrintF(), v8::internal::PrintPID(), v8::internal::GCTracer::Event::SCAVENGER, v8::internal::GCTracer::Event::scopes, v8::internal::GCTracer::Event::start_memory_size, v8::internal::GCTracer::Event::start_object_size, v8::internal::GCTracer::Event::start_time, v8::internal::Isolate::time_millis_since_init(), v8::internal::GCTracer::Event::type, and v8::internal::GCTracer::Event::TypeName().
Referenced by Stop().
|
private |
Definition at line 266 of file gc-tracer.cc.
References current_, v8::internal::GCTracer::Event::end_holes_size, v8::internal::GCTracer::Event::end_object_size, v8::internal::GCTracer::Event::end_time, v8::internal::GCTracer::Scope::EXTERNAL, heap_, v8::internal::GCTracer::Event::incremental_marking_duration, v8::internal::GCTracer::Event::incremental_marking_steps, IncrementalMarkingSpeedInBytesPerMillisecond(), v8::internal::Heap::isolate(), v8::internal::GCTracer::Event::longest_incremental_marking_step, v8::internal::GCTracer::Scope::MC_EVACUATE_PAGES, v8::internal::GCTracer::Scope::MC_MARK, v8::internal::GCTracer::Scope::MC_SWEEP, v8::internal::GCTracer::Scope::MC_SWEEP_CELL, v8::internal::GCTracer::Scope::MC_SWEEP_CODE, v8::internal::GCTracer::Scope::MC_SWEEP_MAP, v8::internal::GCTracer::Scope::MC_SWEEP_NEWSPACE, v8::internal::GCTracer::Scope::MC_SWEEP_OLDSPACE, v8::internal::GCTracer::Scope::MC_UPDATE_MISC_POINTERS, v8::internal::GCTracer::Scope::MC_UPDATE_NEW_TO_NEW_POINTERS, v8::internal::GCTracer::Scope::MC_UPDATE_OLD_TO_NEW_POINTERS, v8::internal::GCTracer::Scope::MC_UPDATE_POINTERS_BETWEEN_EVACUATED, v8::internal::GCTracer::Scope::MC_UPDATE_POINTERS_TO_EVACUATED, v8::internal::GCTracer::Scope::MC_UPDATE_ROOT_TO_NEW_POINTERS, v8::internal::GCTracer::Scope::MC_WEAKCOLLECTION_ABORT, v8::internal::GCTracer::Scope::MC_WEAKCOLLECTION_CLEAR, v8::internal::GCTracer::Scope::MC_WEAKCOLLECTION_PROCESS, NewSpaceAllocationThroughputInBytesPerMillisecond(), v8::internal::Heap::nodes_copied_in_new_space_, v8::internal::Heap::nodes_died_in_new_space_, v8::internal::Heap::nodes_promoted_, previous_, v8::internal::PrintF(), v8::internal::PrintPID(), v8::internal::Heap::promoted_objects_size_, v8::internal::Heap::promotion_rate_, v8::internal::GCTracer::Event::SCAVENGER, ScavengeSpeedInBytesPerMillisecond(), v8::internal::GCTracer::Event::scopes, v8::internal::Heap::semi_space_copied_object_size_, v8::internal::Heap::semi_space_copied_rate_, v8::internal::GCTracer::Event::start_holes_size, v8::internal::GCTracer::Event::start_object_size, v8::internal::GCTracer::Event::start_time, v8::internal::Isolate::time_millis_since_init(), v8::internal::GCTracer::Event::type, v8::internal::GCTracer::Event::TypeName(), and V8_PTR_PREFIX.
Referenced by Stop().
intptr_t v8::internal::GCTracer::ScavengeSpeedInBytesPerMillisecond | ( | ) | const |
Definition at line 432 of file gc-tracer.cc.
References v8::internal::RingBuffer< T, MAX_SIZE >::begin(), v8::internal::RingBuffer< T, MAX_SIZE >::end(), and scavenger_events_.
Referenced by v8::internal::Heap::IdleNotification(), and PrintNVP().
void v8::internal::GCTracer::Start | ( | GarbageCollector | collector, |
const char * | gc_reason, | ||
const char * | collector_reason | ||
) |
Definition at line 98 of file gc-tracer.cc.
References AddNewSpaceAllocationTime(), v8::internal::NewSpace::bottom(), v8::internal::CountTotalHolesSize(), v8::internal::GCTracer::Event::cumulative_incremental_marking_bytes, cumulative_incremental_marking_bytes_, v8::internal::GCTracer::Event::cumulative_incremental_marking_duration, cumulative_incremental_marking_duration_, v8::internal::GCTracer::Event::cumulative_incremental_marking_steps, cumulative_incremental_marking_steps_, v8::internal::GCTracer::Event::cumulative_pure_incremental_marking_duration, cumulative_pure_incremental_marking_duration_, current_, v8::internal::GCTracer::Event::end_time, heap_, v8::internal::Heap::isolate(), v8::internal::GCTracer::Event::longest_incremental_marking_step, longest_incremental_marking_step_, v8::internal::GCTracer::Event::MARK_COMPACTOR, v8::internal::Isolate::memory_allocator(), v8::internal::Heap::new_space(), v8::internal::GCTracer::Event::new_space_object_size, new_space_top_after_gc_, v8::internal::GCTracer::Scope::NUMBER_OF_SCOPES, previous_, previous_mark_compactor_event_, v8::internal::SCAVENGER, v8::internal::GCTracer::Event::SCAVENGER, v8::internal::GCTracer::Event::scopes, v8::internal::MemoryAllocator::Size(), v8::internal::Heap::SizeOfObjects(), v8::internal::GCTracer::Event::start_holes_size, v8::internal::GCTracer::Event::start_memory_size, v8::internal::GCTracer::Event::start_object_size, v8::internal::GCTracer::Event::start_time, v8::base::OS::TimeCurrentMillis(), v8::internal::NewSpace::top(), and v8::internal::GCTracer::Event::type.
Referenced by v8::internal::Heap::CollectGarbage().
void v8::internal::GCTracer::Stop | ( | ) |
Definition at line 140 of file gc-tracer.cc.
References v8::internal::CountTotalHolesSize(), v8::internal::GCTracer::Event::cumulative_incremental_marking_bytes, v8::internal::GCTracer::Event::cumulative_incremental_marking_duration, v8::internal::GCTracer::Event::cumulative_incremental_marking_steps, v8::internal::GCTracer::Event::cumulative_pure_incremental_marking_duration, current_, v8::internal::GCTracer::Event::end_holes_size, v8::internal::GCTracer::Event::end_memory_size, v8::internal::GCTracer::Event::end_object_size, v8::internal::GCTracer::Event::end_time, heap_, v8::internal::GCTracer::Event::incremental_marking_bytes, v8::internal::GCTracer::Event::incremental_marking_duration, v8::internal::GCTracer::Event::incremental_marking_steps, v8::internal::Heap::isolate(), longest_incremental_marking_step_, mark_compactor_events_, v8::internal::Max(), v8::internal::GCTracer::Scope::MC_MARK, v8::internal::Isolate::memory_allocator(), v8::internal::Heap::new_space(), new_space_top_after_gc_, previous_, previous_mark_compactor_event_, Print(), PrintNVP(), v8::internal::Heap::PrintShortHeapStatistics(), v8::internal::GCTracer::Event::pure_incremental_marking_duration, v8::internal::RingBuffer< T, MAX_SIZE >::push_front(), v8::internal::GCTracer::Event::SCAVENGER, scavenger_events_, v8::internal::GCTracer::Event::scopes, v8::internal::MemoryAllocator::Size(), v8::internal::Heap::SizeOfObjects(), v8::internal::GCTracer::Event::start_time, v8::base::OS::TimeCurrentMillis(), v8::internal::NewSpace::top(), v8::internal::GCTracer::Event::type, and v8::internal::Heap::UpdateCumulativeGCStatistics().
Referenced by v8::internal::Heap::CollectGarbage().
|
private |
Definition at line 360 of file gc-tracer.h.
Referenced by AddNewSpaceAllocationTime(), and NewSpaceAllocationThroughputInBytesPerMillisecond().
|
private |
Definition at line 367 of file gc-tracer.h.
Referenced by AddIncrementalMarkingStep(), IncrementalMarkingSpeedInBytesPerMillisecond(), and Start().
|
private |
Definition at line 370 of file gc-tracer.h.
Referenced by AddIncrementalMarkingStep(), IncrementalMarkingSpeedInBytesPerMillisecond(), MeanIncrementalMarkingDuration(), and Start().
|
private |
Definition at line 363 of file gc-tracer.h.
Referenced by AddIncrementalMarkingStep(), MeanIncrementalMarkingDuration(), and Start().
|
private |
Definition at line 381 of file gc-tracer.h.
Referenced by AddIncrementalMarkingStep(), AddMarkingTime(), and cumulative_marking_duration().
|
private |
Definition at line 374 of file gc-tracer.h.
Referenced by AddIncrementalMarkingStep(), IncrementalMarkingSpeedInBytesPerMillisecond(), and Start().
|
private |
Definition at line 390 of file gc-tracer.h.
Referenced by AddSweepingTime(), and cumulative_sweeping_duration().
|
private |
Definition at line 345 of file gc-tracer.h.
Referenced by GCTracer(), Print(), PrintNVP(), Start(), Stop(), and v8::internal::GCTracer::Scope::~Scope().
|
private |
Definition at line 341 of file gc-tracer.h.
Referenced by Print(), PrintNVP(), Start(), and Stop().
|
static |
Definition at line 238 of file gc-tracer.h.
|
private |
Definition at line 377 of file gc-tracer.h.
Referenced by AddIncrementalMarkingStep(), MaxIncrementalMarkingDuration(), Start(), and Stop().
|
private |
Definition at line 357 of file gc-tracer.h.
Referenced by IncrementalMarkingSpeedInBytesPerMillisecond(), MarkCompactSpeedInBytesPerMillisecond(), MaxIncrementalMarkingDuration(), MaxMarkCompactorDuration(), MeanIncrementalMarkingDuration(), MeanMarkCompactorDuration(), and Stop().
|
private |
Definition at line 394 of file gc-tracer.h.
|
private |
Definition at line 348 of file gc-tracer.h.
Referenced by GCTracer(), PrintNVP(), Start(), and Stop().
|
private |
Definition at line 351 of file gc-tracer.h.
Referenced by GCTracer(), Start(), and Stop().
|
private |
Definition at line 354 of file gc-tracer.h.
Referenced by MaxScavengerDuration(), MeanScavengerDuration(), ScavengeSpeedInBytesPerMillisecond(), and Stop().