src/share/vm/memory/metaspace.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/memory

src/share/vm/memory/metaspace.cpp

Print this page




3140 }
3141 
3142 void Metaspace::global_initialize() {
3143   MetaspaceGC::initialize();
3144 
3145   // Initialize the alignment for shared spaces.
3146   int max_alignment = os::vm_allocation_granularity();
3147   size_t cds_total = 0;
3148 
3149   MetaspaceShared::set_max_alignment(max_alignment);
3150 
3151   if (DumpSharedSpaces) {
3152 #if INCLUDE_CDS
3153     MetaspaceShared::estimate_regions_size();
3154 
3155     SharedReadOnlySize  = align_size_up(SharedReadOnlySize,  max_alignment);
3156     SharedReadWriteSize = align_size_up(SharedReadWriteSize, max_alignment);
3157     SharedMiscDataSize  = align_size_up(SharedMiscDataSize,  max_alignment);
3158     SharedMiscCodeSize  = align_size_up(SharedMiscCodeSize,  max_alignment);
3159 
3160     // the min_misc_code_size estimate is based on MetaspaceShared::generate_vtable_methods()


















3161     uintx min_misc_code_size = align_size_up(
3162       (MetaspaceShared::num_virtuals * MetaspaceShared::vtbl_list_size) *
3163         (sizeof(void*) + MetaspaceShared::vtbl_method_size) + MetaspaceShared::vtbl_common_code_size,
3164           max_alignment);
3165 
3166     if (SharedMiscCodeSize < min_misc_code_size) {
3167       report_out_of_shared_space(SharedMiscCode);
3168     }
3169 
3170     // Initialize with the sum of the shared space sizes.  The read-only
3171     // and read write metaspace chunks will be allocated out of this and the
3172     // remainder is the misc code and data chunks.
3173     cds_total = FileMapInfo::shared_spaces_size();
3174     cds_total = align_size_up(cds_total, _reserve_alignment);
3175     _space_list = new VirtualSpaceList(cds_total/wordSize);
3176     _chunk_manager_metadata = new ChunkManager(SpecializedChunk, SmallChunk, MediumChunk);
3177 
3178     if (!_space_list->initialization_succeeded()) {
3179       vm_exit_during_initialization("Unable to dump shared archive.", NULL);
3180     }




3140 }
3141 
3142 void Metaspace::global_initialize() {
3143   MetaspaceGC::initialize();
3144 
3145   // Initialize the alignment for shared spaces.
3146   int max_alignment = os::vm_allocation_granularity();
3147   size_t cds_total = 0;
3148 
3149   MetaspaceShared::set_max_alignment(max_alignment);
3150 
3151   if (DumpSharedSpaces) {
3152 #if INCLUDE_CDS
3153     MetaspaceShared::estimate_regions_size();
3154 
3155     SharedReadOnlySize  = align_size_up(SharedReadOnlySize,  max_alignment);
3156     SharedReadWriteSize = align_size_up(SharedReadWriteSize, max_alignment);
3157     SharedMiscDataSize  = align_size_up(SharedMiscDataSize,  max_alignment);
3158     SharedMiscCodeSize  = align_size_up(SharedMiscCodeSize,  max_alignment);
3159 
3160     // make sure SharedReadOnlySize and SharedReadWriteSize are not less than
3161     // the minimum values.
3162     if (SharedReadOnlySize < MetaspaceShared::min_ro_size){
3163         report_out_of_shared_space(SharedReadOnly);
3164     }
3165 
3166     if (SharedReadWriteSize < MetaspaceShared::min_rw_size){
3167         report_out_of_shared_space(SharedReadWrite);
3168     }
3169 
3170     // the min_misc_data_size and min_misc_code_size estimates are based on
3171     // MetaspaceShared::generate_vtable_methods()
3172     uint min_misc_data_size = align_size_up(
3173       MetaspaceShared::num_virtuals * MetaspaceShared::vtbl_list_size * sizeof(void*), max_alignment);
3174 
3175     if (SharedMiscDataSize < min_misc_data_size) {
3176       report_out_of_shared_space(SharedMiscData);
3177     }
3178 
3179     uintx min_misc_code_size = align_size_up(
3180       (MetaspaceShared::num_virtuals * MetaspaceShared::vtbl_list_size) *
3181         (sizeof(void*) + MetaspaceShared::vtbl_method_size) + MetaspaceShared::vtbl_common_code_size,
3182           max_alignment);
3183 
3184     if (SharedMiscCodeSize < min_misc_code_size) {
3185       report_out_of_shared_space(SharedMiscCode);
3186     }
3187 
3188     // Initialize with the sum of the shared space sizes.  The read-only
3189     // and read write metaspace chunks will be allocated out of this and the
3190     // remainder is the misc code and data chunks.
3191     cds_total = FileMapInfo::shared_spaces_size();
3192     cds_total = align_size_up(cds_total, _reserve_alignment);
3193     _space_list = new VirtualSpaceList(cds_total/wordSize);
3194     _chunk_manager_metadata = new ChunkManager(SpecializedChunk, SmallChunk, MediumChunk);
3195 
3196     if (!_space_list->initialization_succeeded()) {
3197       vm_exit_during_initialization("Unable to dump shared archive.", NULL);
3198     }


src/share/vm/memory/metaspace.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File