273 case GCCause::_metadata_GC_clear_soft_refs: 274 // Receiving these causes means the VM itself entered the safepoint for metadata collection. 275 // While Epsilon does not do GC, it has to perform sizing adjustments, otherwise we would 276 // re-enter the safepoint again very soon. 277 278 assert(SafepointSynchronize::is_at_safepoint(), "Expected at safepoint"); 279 log_info(gc)("GC request for \"%s\" is handled", GCCause::to_string(cause)); 280 MetaspaceGC::compute_new_size(); 281 print_metaspace_info(); 282 break; 283 default: 284 log_info(gc)("GC request for \"%s\" is ignored", GCCause::to_string(cause)); 285 } 286 _monitoring_support->update_counters(); 287 } 288 289 void EpsilonHeap::do_full_collection(bool clear_all_soft_refs) { 290 collect(gc_cause()); 291 } 292 293 void EpsilonHeap::safe_object_iterate(ObjectClosure *cl) { 294 _space->safe_object_iterate(cl); 295 } 296 297 void EpsilonHeap::print_on(outputStream *st) const { 298 st->print_cr("Epsilon Heap"); 299 300 // Cast away constness: 301 ((VirtualSpace)_virtual_space).print_on(st); 302 303 st->print_cr("Allocation space:"); 304 _space->print_on(st); 305 306 MetaspaceUtils::print_on(st); 307 } 308 309 bool EpsilonHeap::print_location(outputStream* st, void* addr) const { 310 return BlockLocationPrinter<EpsilonHeap>::print_location(st, addr); 311 } 312 313 void EpsilonHeap::print_tracing_info() const { 314 print_heap_info(used()); | 273 case GCCause::_metadata_GC_clear_soft_refs: 274 // Receiving these causes means the VM itself entered the safepoint for metadata collection. 275 // While Epsilon does not do GC, it has to perform sizing adjustments, otherwise we would 276 // re-enter the safepoint again very soon. 277 278 assert(SafepointSynchronize::is_at_safepoint(), "Expected at safepoint"); 279 log_info(gc)("GC request for \"%s\" is handled", GCCause::to_string(cause)); 280 MetaspaceGC::compute_new_size(); 281 print_metaspace_info(); 282 break; 283 default: 284 log_info(gc)("GC request for \"%s\" is ignored", GCCause::to_string(cause)); 285 } 286 _monitoring_support->update_counters(); 287 } 288 289 void EpsilonHeap::do_full_collection(bool clear_all_soft_refs) { 290 collect(gc_cause()); 291 } 292 293 void EpsilonHeap::object_iterate(ObjectClosure *cl) { 294 _space->object_iterate(cl); 295 } 296 297 void EpsilonHeap::print_on(outputStream *st) const { 298 st->print_cr("Epsilon Heap"); 299 300 // Cast away constness: 301 ((VirtualSpace)_virtual_space).print_on(st); 302 303 st->print_cr("Allocation space:"); 304 _space->print_on(st); 305 306 MetaspaceUtils::print_on(st); 307 } 308 309 bool EpsilonHeap::print_location(outputStream* st, void* addr) const { 310 return BlockLocationPrinter<EpsilonHeap>::print_location(st, addr); 311 } 312 313 void EpsilonHeap::print_tracing_info() const { 314 print_heap_info(used()); |