Mercurial > hg > graal-jvmci-8
comparison src/share/vm/memory/metaspace.cpp @ 8040:a83cd101fd62
8005452: NPG: Create new flags for Metaspace resizing policy
Reviewed-by: johnc, jwilhelm, coleenp, stefank
author | jmasa |
---|---|
date | Wed, 23 Jan 2013 19:08:04 -0800 |
parents | d9058e388631 |
children | 3efdfd6ddbf2 1c88b99a2b01 |
comparison
equal
deleted
inserted
replaced
8039:5e401ef52ec0 | 8040:a83cd101fd62 |
---|---|
1062 // gen had bounds, MinMetaspaceExpansion and MaxMetaspaceExpansion. The | 1062 // gen had bounds, MinMetaspaceExpansion and MaxMetaspaceExpansion. The |
1063 // metaspace policy uses those as the small and large steps for the HWM. | 1063 // metaspace policy uses those as the small and large steps for the HWM. |
1064 // | 1064 // |
1065 // After the GC the compute_new_size() for MetaspaceGC is called to | 1065 // After the GC the compute_new_size() for MetaspaceGC is called to |
1066 // resize the capacity of the metaspaces. The current implementation | 1066 // resize the capacity of the metaspaces. The current implementation |
1067 // is based on the flags MinHeapFreeRatio and MaxHeapFreeRatio used | 1067 // is based on the flags MinMetaspaceFreeRatio and MaxHeapFreeRatio used |
1068 // to resize the Java heap by some GC's. New flags can be implemented | 1068 // to resize the Java heap by some GC's. New flags can be implemented |
1069 // if really needed. MinHeapFreeRatio is used to calculate how much | 1069 // if really needed. MinHeapFreeRatio is used to calculate how much |
1070 // free space is desirable in the metaspace capacity to decide how much | 1070 // free space is desirable in the metaspace capacity to decide how much |
1071 // to increase the HWM. MaxHeapFreeRatio is used to decide how much | 1071 // to increase the HWM. MaxMetaspaceFreeRatio is used to decide how much |
1072 // free space is desirable in the metaspace capacity before decreasing | 1072 // free space is desirable in the metaspace capacity before decreasing |
1073 // the HWM. | 1073 // the HWM. |
1074 | 1074 |
1075 // Calculate the amount to increase the high water mark (HWM). | 1075 // Calculate the amount to increase the high water mark (HWM). |
1076 // Increase by a minimum amount (MinMetaspaceExpansion) so that | 1076 // Increase by a minimum amount (MinMetaspaceExpansion) so that |
1164 // Check to see if these two can be calculated without walking the CLDG | 1164 // Check to see if these two can be calculated without walking the CLDG |
1165 size_t used_after_gc = vsl->used_bytes_sum(); | 1165 size_t used_after_gc = vsl->used_bytes_sum(); |
1166 size_t capacity_until_GC = vsl->capacity_bytes_sum(); | 1166 size_t capacity_until_GC = vsl->capacity_bytes_sum(); |
1167 size_t free_after_gc = capacity_until_GC - used_after_gc; | 1167 size_t free_after_gc = capacity_until_GC - used_after_gc; |
1168 | 1168 |
1169 const double minimum_free_percentage = MinHeapFreeRatio / 100.0; | 1169 const double minimum_free_percentage = MinMetaspaceFreeRatio / 100.0; |
1170 const double maximum_used_percentage = 1.0 - minimum_free_percentage; | 1170 const double maximum_used_percentage = 1.0 - minimum_free_percentage; |
1171 | 1171 |
1172 const double min_tmp = used_after_gc / maximum_used_percentage; | 1172 const double min_tmp = used_after_gc / maximum_used_percentage; |
1173 size_t minimum_desired_capacity = | 1173 size_t minimum_desired_capacity = |
1174 (size_t)MIN2(min_tmp, double(max_uintx)); | 1174 (size_t)MIN2(min_tmp, double(max_uintx)); |
1230 size_t max_shrink_words = capacity_until_GC - minimum_desired_capacity; | 1230 size_t max_shrink_words = capacity_until_GC - minimum_desired_capacity; |
1231 assert(max_shrink_words >= 0, err_msg("max_shrink_words " SIZE_FORMAT, | 1231 assert(max_shrink_words >= 0, err_msg("max_shrink_words " SIZE_FORMAT, |
1232 max_shrink_words)); | 1232 max_shrink_words)); |
1233 | 1233 |
1234 // Should shrinking be considered? | 1234 // Should shrinking be considered? |
1235 if (MaxHeapFreeRatio < 100) { | 1235 if (MaxMetaspaceFreeRatio < 100) { |
1236 const double maximum_free_percentage = MaxHeapFreeRatio / 100.0; | 1236 const double maximum_free_percentage = MaxMetaspaceFreeRatio / 100.0; |
1237 const double minimum_used_percentage = 1.0 - maximum_free_percentage; | 1237 const double minimum_used_percentage = 1.0 - maximum_free_percentage; |
1238 const double max_tmp = used_after_gc / minimum_used_percentage; | 1238 const double max_tmp = used_after_gc / minimum_used_percentage; |
1239 size_t maximum_desired_capacity = (size_t)MIN2(max_tmp, double(max_uintx)); | 1239 size_t maximum_desired_capacity = (size_t)MIN2(max_tmp, double(max_uintx)); |
1240 maximum_desired_capacity = MAX2(maximum_desired_capacity, | 1240 maximum_desired_capacity = MAX2(maximum_desired_capacity, |
1241 MetaspaceSize); | 1241 MetaspaceSize); |