61
62 const size_t heap_size = _collector_policy->max_heap_byte_size();
63
64 ReservedSpace heap_rs = Universe::reserve_heap(heap_size, _collector_policy->heap_alignment());
65 MemTracker::record_virtual_memory_type((address)heap_rs.base(), mtJavaHeap);
66
67 os::trace_page_sizes("ps main", _collector_policy->min_heap_byte_size(),
68 heap_size, generation_alignment(),
69 heap_rs.base(),
70 heap_rs.size());
71 if (!heap_rs.is_reserved()) {
72 vm_shutdown_during_initialization(
73 "Could not reserve enough space for object heap");
74 return JNI_ENOMEM;
75 }
76
77 initialize_reserved_region((HeapWord*)heap_rs.base(), (HeapWord*)(heap_rs.base() + heap_rs.size()));
78
79 CardTableExtension* const barrier_set = new CardTableExtension(reserved_region());
80 barrier_set->initialize();
81 _barrier_set = barrier_set;
82 oopDesc::set_bs(_barrier_set);
83 if (_barrier_set == NULL) {
84 vm_shutdown_during_initialization(
85 "Could not reserve enough space for barrier set");
86 return JNI_ENOMEM;
87 }
88
89 // Make up the generations
90 // Calculate the maximum size that a generation can grow. This
91 // includes growth into the other generation. Note that the
92 // parameter _max_gen_size is kept as the maximum
93 // size of the generation as the boundaries currently stand.
94 // _max_gen_size is still used as that value.
95 double max_gc_pause_sec = ((double) MaxGCPauseMillis)/1000.0;
96 double max_gc_minor_pause_sec = ((double) MaxGCMinorPauseMillis)/1000.0;
97
98 _gens = new AdjoiningGenerations(heap_rs, _collector_policy, generation_alignment());
99
100 _old_gen = _gens->old_gen();
101 _young_gen = _gens->young_gen();
102
103 const size_t eden_capacity = _young_gen->eden_space()->capacity_in_bytes();
104 const size_t old_capacity = _old_gen->capacity_in_bytes();
105 const size_t initial_promo_size = MIN2(eden_capacity, old_capacity);
106 _size_policy =
107 new PSAdaptiveSizePolicy(eden_capacity,
|
61
62 const size_t heap_size = _collector_policy->max_heap_byte_size();
63
64 ReservedSpace heap_rs = Universe::reserve_heap(heap_size, _collector_policy->heap_alignment());
65 MemTracker::record_virtual_memory_type((address)heap_rs.base(), mtJavaHeap);
66
67 os::trace_page_sizes("ps main", _collector_policy->min_heap_byte_size(),
68 heap_size, generation_alignment(),
69 heap_rs.base(),
70 heap_rs.size());
71 if (!heap_rs.is_reserved()) {
72 vm_shutdown_during_initialization(
73 "Could not reserve enough space for object heap");
74 return JNI_ENOMEM;
75 }
76
77 initialize_reserved_region((HeapWord*)heap_rs.base(), (HeapWord*)(heap_rs.base() + heap_rs.size()));
78
79 CardTableExtension* const barrier_set = new CardTableExtension(reserved_region());
80 barrier_set->initialize();
81 set_barrier_set(barrier_set);
82
83 // Make up the generations
84 // Calculate the maximum size that a generation can grow. This
85 // includes growth into the other generation. Note that the
86 // parameter _max_gen_size is kept as the maximum
87 // size of the generation as the boundaries currently stand.
88 // _max_gen_size is still used as that value.
89 double max_gc_pause_sec = ((double) MaxGCPauseMillis)/1000.0;
90 double max_gc_minor_pause_sec = ((double) MaxGCMinorPauseMillis)/1000.0;
91
92 _gens = new AdjoiningGenerations(heap_rs, _collector_policy, generation_alignment());
93
94 _old_gen = _gens->old_gen();
95 _young_gen = _gens->young_gen();
96
97 const size_t eden_capacity = _young_gen->eden_space()->capacity_in_bytes();
98 const size_t old_capacity = _old_gen->capacity_in_bytes();
99 const size_t initial_promo_size = MIN2(eden_capacity, old_capacity);
100 _size_policy =
101 new PSAdaptiveSizePolicy(eden_capacity,
|