384
385 initialize_all();
386
387 _tracer = new (ResourceObj::C_HEAP, mtGC) ShenandoahTracer();
388 _stw_timer = new (ResourceObj::C_HEAP, mtGC) STWGCTimer();
389 _conc_timer = new (ResourceObj::C_HEAP, mtGC) ConcurrentGCTimer();
390 _user_requested_gcs = 0;
391 _allocation_failure_gcs = 0;
392 _conc_gc_aborted = false;
393
394 _phase_names[init_mark] = "Initial Mark Pauses (net)";
395 _phase_names[init_mark_gross] = "Initial Mark Pauses (gross)";
396 _phase_names[final_mark] = "Final Mark Pauses (net)";
397 _phase_names[final_mark_gross] = "Final Mark Pauses (gross)";
398 _phase_names[accumulate_stats] = " Accumulate Stats";
399 _phase_names[make_parsable] = " Make Parsable";
400 _phase_names[clear_liveness] = " Clear Liveness";
401 _phase_names[scan_roots] = " Scan Roots";
402 _phase_names[update_roots] = " Update Roots";
403 _phase_names[drain_satb] = " Drain SATB";
404 _phase_names[drain_queues] = " Drain Queues";
405 _phase_names[weakrefs] = " Weak References";
406 _phase_names[class_unloading] = " Class Unloading";
407 _phase_names[prepare_evac] = " Prepare Evacuation";
408 _phase_names[init_evac] = " Initial Evacuation";
409
410 _phase_names[scan_thread_roots] = " Scan Thread Roots";
411 _phase_names[scan_code_roots] = " Scan Code Cache Roots";
412 _phase_names[scan_string_table_roots] = " Scan String Table Roots";
413 _phase_names[scan_universe_roots] = " Scan Universe Roots";
414 _phase_names[scan_jni_roots] = " Scan JNI Roots";
415 _phase_names[scan_jni_weak_roots] = " Scan JNI Weak Roots";
416 _phase_names[scan_synchronizer_roots] = " Scan Synchronizer Roots";
417 _phase_names[scan_flat_profiler_roots] = " Scan Flat Profiler Roots";
418 _phase_names[scan_management_roots] = " Scan Management Roots";
419 _phase_names[scan_system_dictionary_roots] = " Scan System Dictionary Roots";
420 _phase_names[scan_cldg_roots] = " Scan CLDG Roots";
421 _phase_names[scan_jvmti_roots] = " Scan JVMTI Roots";
422
423 _phase_names[update_thread_roots] = " Update Thread Roots";
424 _phase_names[update_code_roots] = " Update Code Cache Roots";
435
436 _phase_names[evac_thread_roots] = " Evacuate Thread Roots";
437 _phase_names[evac_code_roots] = " Evacuate Code Cache Roots";
438 _phase_names[evac_string_table_roots] = " Evacuate String Table Roots";
439 _phase_names[evac_universe_roots] = " Evacuate Universe Roots";
440 _phase_names[evac_jni_roots] = " Evacuate JNI Roots";
441 _phase_names[evac_jni_weak_roots] = " Evacuate JNI Weak Roots";
442 _phase_names[evac_synchronizer_roots] = " Evacuate Synchronizer Roots";
443 _phase_names[evac_flat_profiler_roots] = " Evacuate Flat Profiler Roots";
444 _phase_names[evac_management_roots] = " Evacuate Management Roots";
445 _phase_names[evac_system_dictionary_roots] = " Evacuate System Dictionary Roots";
446 _phase_names[evac_cldg_roots] = " Evacuate CLDG Roots";
447 _phase_names[evac_jvmti_roots] = " Evacuate JVMTI Roots";
448
449 _phase_names[recycle_regions] = " Recycle regions";
450 _phase_names[reset_bitmaps] = "ResetBitmaps";
451 _phase_names[resize_tlabs] = "Resize TLABs";
452
453 _phase_names[full_gc] = "Full GC Times";
454 _phase_names[full_gc_mark] = " Mark";
455 _phase_names[full_gc_mark_drain_queues] = " Drain Queues";
456 _phase_names[full_gc_mark_weakrefs] = " Weak References";
457 _phase_names[full_gc_mark_class_unloading] = " Class Unloading";
458 _phase_names[full_gc_calculate_addresses] = " Calculate Addresses";
459 _phase_names[full_gc_adjust_pointers] = " Adjust Pointers";
460 _phase_names[full_gc_copy_objects] = " Copy Objects";
461
462 _phase_names[conc_mark] = "Concurrent Marking Times";
463 _phase_names[conc_evac] = "Concurrent Evacuation Times";
464
465 if (ShenandoahGCHeuristics != NULL) {
466 if (strcmp(ShenandoahGCHeuristics, "aggressive") == 0) {
467 log_info(gc, init)("Shenandoah heuristics: aggressive");
468 _heuristics = new AggressiveHeuristics();
469 } else if (strcmp(ShenandoahGCHeuristics, "dynamic") == 0) {
470 log_info(gc, init)("Shenandoah heuristics: dynamic");
471 _heuristics = new DynamicHeuristics();
472 } else if (strcmp(ShenandoahGCHeuristics, "adaptive") == 0) {
473 log_info(gc, init)("Shenandoah heuristics: adaptive");
474 _heuristics = new AdaptiveHeuristics();
475 } else if (strcmp(ShenandoahGCHeuristics, "passive") == 0) {
|
384
385 initialize_all();
386
387 _tracer = new (ResourceObj::C_HEAP, mtGC) ShenandoahTracer();
388 _stw_timer = new (ResourceObj::C_HEAP, mtGC) STWGCTimer();
389 _conc_timer = new (ResourceObj::C_HEAP, mtGC) ConcurrentGCTimer();
390 _user_requested_gcs = 0;
391 _allocation_failure_gcs = 0;
392 _conc_gc_aborted = false;
393
394 _phase_names[init_mark] = "Initial Mark Pauses (net)";
395 _phase_names[init_mark_gross] = "Initial Mark Pauses (gross)";
396 _phase_names[final_mark] = "Final Mark Pauses (net)";
397 _phase_names[final_mark_gross] = "Final Mark Pauses (gross)";
398 _phase_names[accumulate_stats] = " Accumulate Stats";
399 _phase_names[make_parsable] = " Make Parsable";
400 _phase_names[clear_liveness] = " Clear Liveness";
401 _phase_names[scan_roots] = " Scan Roots";
402 _phase_names[update_roots] = " Update Roots";
403 _phase_names[drain_satb] = " Drain SATB";
404 _phase_names[weakrefs] = " Weak References";
405 _phase_names[class_unloading] = " Class Unloading";
406 _phase_names[prepare_evac] = " Prepare Evacuation";
407 _phase_names[init_evac] = " Initial Evacuation";
408
409 _phase_names[scan_thread_roots] = " Scan Thread Roots";
410 _phase_names[scan_code_roots] = " Scan Code Cache Roots";
411 _phase_names[scan_string_table_roots] = " Scan String Table Roots";
412 _phase_names[scan_universe_roots] = " Scan Universe Roots";
413 _phase_names[scan_jni_roots] = " Scan JNI Roots";
414 _phase_names[scan_jni_weak_roots] = " Scan JNI Weak Roots";
415 _phase_names[scan_synchronizer_roots] = " Scan Synchronizer Roots";
416 _phase_names[scan_flat_profiler_roots] = " Scan Flat Profiler Roots";
417 _phase_names[scan_management_roots] = " Scan Management Roots";
418 _phase_names[scan_system_dictionary_roots] = " Scan System Dictionary Roots";
419 _phase_names[scan_cldg_roots] = " Scan CLDG Roots";
420 _phase_names[scan_jvmti_roots] = " Scan JVMTI Roots";
421
422 _phase_names[update_thread_roots] = " Update Thread Roots";
423 _phase_names[update_code_roots] = " Update Code Cache Roots";
434
435 _phase_names[evac_thread_roots] = " Evacuate Thread Roots";
436 _phase_names[evac_code_roots] = " Evacuate Code Cache Roots";
437 _phase_names[evac_string_table_roots] = " Evacuate String Table Roots";
438 _phase_names[evac_universe_roots] = " Evacuate Universe Roots";
439 _phase_names[evac_jni_roots] = " Evacuate JNI Roots";
440 _phase_names[evac_jni_weak_roots] = " Evacuate JNI Weak Roots";
441 _phase_names[evac_synchronizer_roots] = " Evacuate Synchronizer Roots";
442 _phase_names[evac_flat_profiler_roots] = " Evacuate Flat Profiler Roots";
443 _phase_names[evac_management_roots] = " Evacuate Management Roots";
444 _phase_names[evac_system_dictionary_roots] = " Evacuate System Dictionary Roots";
445 _phase_names[evac_cldg_roots] = " Evacuate CLDG Roots";
446 _phase_names[evac_jvmti_roots] = " Evacuate JVMTI Roots";
447
448 _phase_names[recycle_regions] = " Recycle regions";
449 _phase_names[reset_bitmaps] = "ResetBitmaps";
450 _phase_names[resize_tlabs] = "Resize TLABs";
451
452 _phase_names[full_gc] = "Full GC Times";
453 _phase_names[full_gc_mark] = " Mark";
454 _phase_names[full_gc_mark_weakrefs] = " Weak References";
455 _phase_names[full_gc_mark_class_unloading] = " Class Unloading";
456 _phase_names[full_gc_calculate_addresses] = " Calculate Addresses";
457 _phase_names[full_gc_adjust_pointers] = " Adjust Pointers";
458 _phase_names[full_gc_copy_objects] = " Copy Objects";
459
460 _phase_names[conc_mark] = "Concurrent Marking Times";
461 _phase_names[conc_evac] = "Concurrent Evacuation Times";
462
463 if (ShenandoahGCHeuristics != NULL) {
464 if (strcmp(ShenandoahGCHeuristics, "aggressive") == 0) {
465 log_info(gc, init)("Shenandoah heuristics: aggressive");
466 _heuristics = new AggressiveHeuristics();
467 } else if (strcmp(ShenandoahGCHeuristics, "dynamic") == 0) {
468 log_info(gc, init)("Shenandoah heuristics: dynamic");
469 _heuristics = new DynamicHeuristics();
470 } else if (strcmp(ShenandoahGCHeuristics, "adaptive") == 0) {
471 log_info(gc, init)("Shenandoah heuristics: adaptive");
472 _heuristics = new AdaptiveHeuristics();
473 } else if (strcmp(ShenandoahGCHeuristics, "passive") == 0) {
|