43 #include "runtime/thread.inline.hpp"
44 #include "runtime/vmThread.hpp"
45
46 //
47 // ConcurrentMarkSweepPolicy methods
48 //
49
50 void ConcurrentMarkSweepPolicy::initialize_alignments() {
51 _space_alignment = _gen_alignment = (uintx)Generation::GenGrain;
52 _heap_alignment = compute_heap_alignment();
53 }
54
55 void ConcurrentMarkSweepPolicy::initialize_generations() {
56 _generations = NEW_C_HEAP_ARRAY3(GenerationSpecPtr, number_of_generations(), mtGC, 0, AllocFailStrategy::RETURN_NULL);
57 if (_generations == NULL)
58 vm_exit_during_initialization("Unable to allocate gen spec");
59
60 if (UseParNewGC) {
61 if (UseAdaptiveSizePolicy) {
62 _generations[0] = new GenerationSpec(Generation::ASParNew,
63 _initial_gen0_size, _max_gen0_size);
64 } else {
65 _generations[0] = new GenerationSpec(Generation::ParNew,
66 _initial_gen0_size, _max_gen0_size);
67 }
68 } else {
69 _generations[0] = new GenerationSpec(Generation::DefNew,
70 _initial_gen0_size, _max_gen0_size);
71 }
72 if (UseAdaptiveSizePolicy) {
73 _generations[1] = new GenerationSpec(Generation::ASConcurrentMarkSweep,
74 _initial_gen1_size, _max_gen1_size);
75 } else {
76 _generations[1] = new GenerationSpec(Generation::ConcurrentMarkSweep,
77 _initial_gen1_size, _max_gen1_size);
78 }
79
80 if (_generations[0] == NULL || _generations[1] == NULL) {
81 vm_exit_during_initialization("Unable to allocate gen spec");
82 }
83 }
84
85 void ConcurrentMarkSweepPolicy::initialize_size_policy(size_t init_eden_size,
86 size_t init_promo_size,
87 size_t init_survivor_size) {
88 double max_gc_minor_pause_sec = ((double) MaxGCMinorPauseMillis)/1000.0;
89 double max_gc_pause_sec = ((double) MaxGCPauseMillis)/1000.0;
90 _size_policy = new CMSAdaptiveSizePolicy(init_eden_size,
91 init_promo_size,
92 init_survivor_size,
93 max_gc_minor_pause_sec,
94 max_gc_pause_sec,
95 GCTimeRatio);
96 }
97
|
43 #include "runtime/thread.inline.hpp"
44 #include "runtime/vmThread.hpp"
45
46 //
47 // ConcurrentMarkSweepPolicy methods
48 //
49
50 void ConcurrentMarkSweepPolicy::initialize_alignments() {
51 _space_alignment = _gen_alignment = (uintx)Generation::GenGrain;
52 _heap_alignment = compute_heap_alignment();
53 }
54
55 void ConcurrentMarkSweepPolicy::initialize_generations() {
56 _generations = NEW_C_HEAP_ARRAY3(GenerationSpecPtr, number_of_generations(), mtGC, 0, AllocFailStrategy::RETURN_NULL);
57 if (_generations == NULL)
58 vm_exit_during_initialization("Unable to allocate gen spec");
59
60 if (UseParNewGC) {
61 if (UseAdaptiveSizePolicy) {
62 _generations[0] = new GenerationSpec(Generation::ASParNew,
63 _initial_young_size, _max_young_size);
64 } else {
65 _generations[0] = new GenerationSpec(Generation::ParNew,
66 _initial_young_size, _max_young_size);
67 }
68 } else {
69 _generations[0] = new GenerationSpec(Generation::DefNew,
70 _initial_young_size, _max_young_size);
71 }
72 if (UseAdaptiveSizePolicy) {
73 _generations[1] = new GenerationSpec(Generation::ASConcurrentMarkSweep,
74 _initial_old_size, _max_old_size);
75 } else {
76 _generations[1] = new GenerationSpec(Generation::ConcurrentMarkSweep,
77 _initial_old_size, _max_old_size);
78 }
79
80 if (_generations[0] == NULL || _generations[1] == NULL) {
81 vm_exit_during_initialization("Unable to allocate gen spec");
82 }
83 }
84
85 void ConcurrentMarkSweepPolicy::initialize_size_policy(size_t init_eden_size,
86 size_t init_promo_size,
87 size_t init_survivor_size) {
88 double max_gc_minor_pause_sec = ((double) MaxGCMinorPauseMillis)/1000.0;
89 double max_gc_pause_sec = ((double) MaxGCPauseMillis)/1000.0;
90 _size_policy = new CMSAdaptiveSizePolicy(init_eden_size,
91 init_promo_size,
92 init_survivor_size,
93 max_gc_minor_pause_sec,
94 max_gc_pause_sec,
95 GCTimeRatio);
96 }
97
|