< prev index next >
src/hotspot/share/gc/g1/g1ConcurrentMark.cpp
Print this page
*** 22,32 ****
*
*/
#include "precompiled.hpp"
#include "classfile/metadataOnStackMark.hpp"
- #include "classfile/symbolTable.hpp"
#include "code/codeCache.hpp"
#include "gc/g1/g1BarrierSet.hpp"
#include "gc/g1/g1CollectedHeap.inline.hpp"
#include "gc/g1/g1CollectorState.hpp"
#include "gc/g1/g1ConcurrentMark.inline.hpp"
--- 22,31 ----
*** 1577,1588 ****
HandleMark hm;
// Is alive closure.
G1CMIsAliveClosure g1_is_alive(_g1h);
! // Inner scope to exclude the cleaning of the string and symbol
! // tables from the displayed time.
{
GCTraceTime(Debug, gc, phases) debug("Reference Processing", _gc_timer_cm);
ReferenceProcessor* rp = _g1h->ref_processor_cm();
--- 1576,1587 ----
HandleMark hm;
// Is alive closure.
G1CMIsAliveClosure g1_is_alive(_g1h);
! // Inner scope to exclude the cleaning of the string table
! // from the displayed time.
{
GCTraceTime(Debug, gc, phases) debug("Reference Processing", _gc_timer_cm);
ReferenceProcessor* rp = _g1h->ref_processor_cm();
*** 1672,1691 ****
{
GCTraceTime(Debug, gc, phases) debug("Weak Processing", _gc_timer_cm);
WeakProcessor::weak_oops_do(&g1_is_alive, &do_nothing_cl);
}
! // Unload Klasses, String, Symbols, Code Cache, etc.
if (ClassUnloadingWithConcurrentMark) {
GCTraceTime(Debug, gc, phases) debug("Class Unloading", _gc_timer_cm);
bool purged_classes = SystemDictionary::do_unloading(_gc_timer_cm, false /* Defer cleaning */);
_g1h->complete_cleaning(&g1_is_alive, purged_classes);
} else {
GCTraceTime(Debug, gc, phases) debug("Cleanup", _gc_timer_cm);
! // No need to clean string table and symbol table as they are treated as strong roots when
// class unloading is disabled.
! _g1h->partial_cleaning(&g1_is_alive, false, false, G1StringDedup::is_enabled());
}
}
class G1PrecleanYieldClosure : public YieldClosure {
G1ConcurrentMark* _cm;
--- 1671,1690 ----
{
GCTraceTime(Debug, gc, phases) debug("Weak Processing", _gc_timer_cm);
WeakProcessor::weak_oops_do(&g1_is_alive, &do_nothing_cl);
}
! // Unload Klasses, String, Code Cache, etc.
if (ClassUnloadingWithConcurrentMark) {
GCTraceTime(Debug, gc, phases) debug("Class Unloading", _gc_timer_cm);
bool purged_classes = SystemDictionary::do_unloading(_gc_timer_cm, false /* Defer cleaning */);
_g1h->complete_cleaning(&g1_is_alive, purged_classes);
} else {
GCTraceTime(Debug, gc, phases) debug("Cleanup", _gc_timer_cm);
! // No need to clean string table as it is treated as strong roots when
// class unloading is disabled.
! _g1h->partial_cleaning(&g1_is_alive, false, G1StringDedup::is_enabled());
}
}
class G1PrecleanYieldClosure : public YieldClosure {
G1ConcurrentMark* _cm;
< prev index next >