src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.hpp

Wed, 23 Dec 2009 09:23:54 -0800

author
ysr
date
Wed, 23 Dec 2009 09:23:54 -0800
changeset 1580
e018e6884bd8
parent 435
a61af66fc99e
child 1822
0bfd3fb24150
permissions
-rw-r--r--

6631166: CMS: better heuristics when combatting fragmentation
Summary: Autonomic per-worker free block cache sizing, tunable coalition policies, fixes to per-size block statistics, retuned gain and bandwidth of some feedback loop filters to allow quicker reactivity to abrupt changes in ambient demand, and other heuristics to reduce fragmentation of the CMS old gen. Also tightened some assertions, including those related to locking.
Reviewed-by: jmasa

duke@435 1 /*
duke@435 2 * Copyright (c) 2007 Sun Microsystems, Inc. All Rights Reserved.
duke@435 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
duke@435 4 *
duke@435 5 * This code is free software; you can redistribute it and/or modify it
duke@435 6 * under the terms of the GNU General Public License version 2 only, as
duke@435 7 * published by the Free Software Foundation.
duke@435 8 *
duke@435 9 * This code is distributed in the hope that it will be useful, but WITHOUT
duke@435 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
duke@435 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
duke@435 12 * version 2 for more details (a copy is included in the LICENSE file that
duke@435 13 * accompanied this code).
duke@435 14 *
duke@435 15 * You should have received a copy of the GNU General Public License version
duke@435 16 * 2 along with this work; if not, write to the Free Software Foundation,
duke@435 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
duke@435 18 *
duke@435 19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
duke@435 20 * CA 95054 USA or visit www.sun.com if you need additional information or
duke@435 21 * have any questions.
duke@435 22 *
duke@435 23 */
duke@435 24
duke@435 25 class ConcurrentMarkSweepPolicy : public TwoGenerationCollectorPolicy {
duke@435 26 protected:
duke@435 27 void initialize_generations();
duke@435 28
duke@435 29 public:
duke@435 30 ConcurrentMarkSweepPolicy();
duke@435 31
duke@435 32 ConcurrentMarkSweepPolicy* as_concurrent_mark_sweep_policy() { return this; }
duke@435 33
duke@435 34 void initialize_gc_policy_counters();
duke@435 35 #if 1
duke@435 36 virtual void initialize_size_policy(size_t init_eden_size,
duke@435 37 size_t init_promo_size,
duke@435 38 size_t init_survivor_size);
duke@435 39 #endif
duke@435 40
duke@435 41 // Returns true if the incremental mode is enabled.
duke@435 42 virtual bool has_soft_ended_eden();
duke@435 43 };
duke@435 44
duke@435 45 class ASConcurrentMarkSweepPolicy : public ConcurrentMarkSweepPolicy {
duke@435 46 public:
duke@435 47
duke@435 48 // Initialize the jstat counters. This method requires a
duke@435 49 // size policy. The size policy is expected to be created
duke@435 50 // after the generations are fully initialized so the
duke@435 51 // initialization of the counters need to be done post
duke@435 52 // the initialization of the generations.
duke@435 53 void initialize_gc_policy_counters();
duke@435 54
duke@435 55 virtual CollectorPolicy::Name kind() {
duke@435 56 return CollectorPolicy::ASConcurrentMarkSweepPolicyKind;
duke@435 57 }
duke@435 58 };

mercurial