/* * Copyright (c) 2021, 2022, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. *
*/
class WorkerTask; class G1Allocator; class G1BatchedTask; class G1CollectedHeap; class G1CollectionSet; class G1CollectorState; class G1ConcurrentMark; class G1EvacFailureRegions; class G1EvacInfo; class G1GCPhaseTimes; class G1HotCardCache; class G1HRPrinter; class G1MonitoringSupport; class G1MonotonicArenaMemoryStats; class G1NewTracer; class G1ParScanThreadStateSet; class G1Policy; class G1RedirtyCardsQueueSet; class G1RemSet; class G1SurvivorRegions; class G1YoungGCEvacFailureInjector; class STWGCTimer; class WorkerThreads;
class outputStream;
class G1YoungCollector { friendclass G1YoungGCNotifyPauseMark; friendclass G1YoungGCTraceTime; friendclass G1YoungGCVerifierMark;
void pre_evacuate_collection_set(G1EvacInfo* evacuation_info); // Actually do the work of evacuating the parts of the collection set. // The has_optional_evacuation_work flag for the initial collection set // evacuation indicates whether one or more optional evacuation steps may // follow. // If not set, G1 can avoid clearing the card tables of regions that we scan // for roots from the heap: when scanning the card table for dirty cards after // all remembered sets have been dumped onto it, for optional evacuation we // mark these cards as "Scanned" to know that we do not need to re-scan them // in the additional optional evacuation passes. This means that in the "Clear // Card Table" phase we need to clear those marks. However, if there is no // optional evacuation, g1 can immediately clean the dirty cards it encounters // as nobody else will be looking at them again, saving the clear card table // work later. // This case is very common (young only collections and most mixed gcs), so // depending on the ratio between scanned and evacuated regions (which g1 always // needs to clear), this is a big win. void evacuate_initial_collection_set(G1ParScanThreadStateSet* per_thread_states, bool has_optional_evacuation_work); void evacuate_optional_collection_set(G1ParScanThreadStateSet* per_thread_states); // Evacuate the next set of optional regions. void evacuate_next_optional_regions(G1ParScanThreadStateSet* per_thread_states);
// Process any reference objects discovered. void process_discovered_references(G1ParScanThreadStateSet* per_thread_states); void post_evacuate_cleanup_1(G1ParScanThreadStateSet* per_thread_states); void post_evacuate_cleanup_2(G1ParScanThreadStateSet* per_thread_states,
G1EvacInfo* evacuation_info);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.