< prev index next >

src/share/vm/gc_implementation/shenandoah/shenandoahControlThread.hpp

Print this page
rev 10548 : [backport] Forceful SATB buffer flushes should be time-periodic, not traffic-dependent
rev 10552 : [backport] Concurrent uncommit should be recorded as GC event

*** 43,52 **** --- 43,59 ---- ShenandoahPeriodicTask(ShenandoahControlThread* thread) : PeriodicTask(100), _thread(thread) {} virtual void task(); }; + // Periodic task to flush SATB buffers periodically. + class ShenandoahPeriodicSATBFlushTask : public PeriodicTask { + public: + ShenandoahPeriodicSATBFlushTask() : PeriodicTask(ShenandoahSATBBufferFlushInterval) {} + virtual void task(); + }; + class ShenandoahControlThread: public ConcurrentGCThread { friend class VMStructs; private: typedef enum {
*** 60,69 **** --- 67,77 ---- // explicit GC waiters when alloc failure GC cycle finishes. We want instead // to make complete explicit cycle for for demanding customers. Monitor _alloc_failure_waiters_lock; Monitor _explicit_gc_waiters_lock; ShenandoahPeriodicTask _periodic_task; + ShenandoahPeriodicSATBFlushTask _periodic_satb_flush_task; private: static SurrogateLockerThread* _slt; public:
*** 83,92 **** --- 91,101 ---- bool check_cancellation_or_degen(ShenandoahHeap::ShenandoahDegenPoint point); void service_concurrent_normal_cycle(GCCause::Cause cause); void service_stw_full_cycle(GCCause::Cause cause); void service_stw_degenerated_cycle(GCCause::Cause cause, ShenandoahHeap::ShenandoahDegenPoint point); + void service_uncommit(double shrink_before); bool try_set_alloc_failure_gc(); void notify_alloc_failure_waiters(); bool is_alloc_failure_gc();
< prev index next >