35 #include "memory/generationSpec.hpp"
36 #include "memory/space.hpp"
37 #include "memory/universe.hpp"
38 #include "runtime/arguments.hpp"
39 #include "runtime/globals_extension.hpp"
40 #include "runtime/handles.inline.hpp"
41 #include "runtime/java.hpp"
42 #include "runtime/thread.inline.hpp"
43 #include "runtime/vmThread.hpp"
44
45 //
46 // ConcurrentMarkSweepPolicy methods
47 //
48
49 void ConcurrentMarkSweepPolicy::initialize_alignments() {
50 _space_alignment = _gen_alignment = (uintx)Generation::GenGrain;
51 _heap_alignment = compute_heap_alignment();
52 }
53
54 void ConcurrentMarkSweepPolicy::initialize_generations() {
55 _generations = NEW_C_HEAP_ARRAY3(GenerationSpecPtr, number_of_generations(), mtGC,
56 CURRENT_PC, AllocFailStrategy::RETURN_NULL);
57 if (_generations == NULL)
58 vm_exit_during_initialization("Unable to allocate gen spec");
59
60 Generation::Name yg_name =
61 UseParNewGC ? Generation::ParNew : Generation::DefNew;
62 _generations[0] = new GenerationSpec(yg_name, _initial_young_size,
63 _max_young_size);
64 _generations[1] = new GenerationSpec(Generation::ConcurrentMarkSweep,
65 _initial_old_size, _max_old_size);
66
67 if (_generations[0] == NULL || _generations[1] == NULL) {
68 vm_exit_during_initialization("Unable to allocate gen spec");
69 }
70 }
71
72 void ConcurrentMarkSweepPolicy::initialize_size_policy(size_t init_eden_size,
73 size_t init_promo_size,
74 size_t init_survivor_size) {
75 double max_gc_pause_sec = ((double) MaxGCPauseMillis)/1000.0;
76 _size_policy = new AdaptiveSizePolicy(init_eden_size,
77 init_promo_size,
78 init_survivor_size,
79 max_gc_pause_sec,
80 GCTimeRatio);
81 }
82
83 void ConcurrentMarkSweepPolicy::initialize_gc_policy_counters() {
84 // initialize the policy counters - 2 collectors, 3 generations
85 if (UseParNewGC) {
86 _gc_policy_counters = new GCPolicyCounters("ParNew:CMS", 2, 3);
87 }
|
35 #include "memory/generationSpec.hpp"
36 #include "memory/space.hpp"
37 #include "memory/universe.hpp"
38 #include "runtime/arguments.hpp"
39 #include "runtime/globals_extension.hpp"
40 #include "runtime/handles.inline.hpp"
41 #include "runtime/java.hpp"
42 #include "runtime/thread.inline.hpp"
43 #include "runtime/vmThread.hpp"
44
45 //
46 // ConcurrentMarkSweepPolicy methods
47 //
48
49 void ConcurrentMarkSweepPolicy::initialize_alignments() {
50 _space_alignment = _gen_alignment = (uintx)Generation::GenGrain;
51 _heap_alignment = compute_heap_alignment();
52 }
53
54 void ConcurrentMarkSweepPolicy::initialize_generations() {
55 Generation::Name yg_name =
56 UseParNewGC ? Generation::ParNew : Generation::DefNew;
57 _young_gen_spec = new GenerationSpec(yg_name, _initial_young_size,
58 _max_young_size, _gen_alignment);
59 _old_gen_spec = new GenerationSpec(Generation::ConcurrentMarkSweep,
60 _initial_old_size, _max_old_size, _gen_alignment);
61
62 if (_young_gen_spec == NULL || _old_gen_spec == NULL) {
63 vm_exit_during_initialization("Unable to allocate gen spec");
64 }
65 }
66
67 void ConcurrentMarkSweepPolicy::initialize_size_policy(size_t init_eden_size,
68 size_t init_promo_size,
69 size_t init_survivor_size) {
70 double max_gc_pause_sec = ((double) MaxGCPauseMillis)/1000.0;
71 _size_policy = new AdaptiveSizePolicy(init_eden_size,
72 init_promo_size,
73 init_survivor_size,
74 max_gc_pause_sec,
75 GCTimeRatio);
76 }
77
78 void ConcurrentMarkSweepPolicy::initialize_gc_policy_counters() {
79 // initialize the policy counters - 2 collectors, 3 generations
80 if (UseParNewGC) {
81 _gc_policy_counters = new GCPolicyCounters("ParNew:CMS", 2, 3);
82 }
|