RFR(s): 8145312: CMS: There is insufficient memory with CMSSamplingGrain=1
Jon Masamitsu
jon.masamitsu at oracle.com
Tue Mar 8 22:02:24 UTC 2016
On 3/8/2016 11:47 AM, sangheon wrote:
> Hi Jon,
>
> Thanks for reviewing this.
>
> concurrentMarkSweepGeneration.cpp: line 606
>
> _eden_chunk_capacity = (_young_gen->max_capacity() + CMSSamplingGrain)
> / CMSSamplingGrain;
>
> If CMSSamplingGrain is larger than 'max_uintx -
> _young_gen->max_capacity()', it will make an overflow.
>
> FYI, '_eden_chunk_capacity' is 'size_t' and 'CMSSamplingGrain' is 'uintx'
Ok.
Changes look good then.
Jon
>
> Thanks,
> Sangheon
>
>
> On 03/08/2016 11:20 AM, Jon Masamitsu wrote:
>> Sangheon,
>>
>> http://cr.openjdk.java.net/~sangheki/8145312/webrev.00/src/share/vm/runtime/commandLineFlagConstraintsGC.cpp.frames.html
>>
>>
>> 456 if (value > max_uintx - max_capacity) {
>> 457 CommandLineError::print(verbose,
>> 458 "CMSSamplingGrain (" UINTX_FORMAT ") must be "
>> 459 "less than or equal to ergonomic maximum (" SIZE_FORMAT ")\n",
>> 460 value, max_uintx - max_capacity);
>>
>>
>> How did you decide to use the test "value > max_uintx - max_capacity"?
>>
>> Jon
>>
>> On 3/8/2016 12:00 AM, sangheon wrote:
>>> Hi all,
>>>
>>> Could I have some reviews for CMSSamplingGrain flag?
>>>
>>> The flag is used to calculate points at which the young gen should
>>> be partitioned for doing parallel work, so it only makes sense to
>>> partition at a granularity equal to or larger than the object size.
>>>
>>> I am proposing to change the minimum value of CMSSamplingGrain from
>>> '1' to 'ObjectAlignmentInBytes'. (ObjectAlignmentInBytes has a
>>> range of [8, 256]).
>>>
>>> In addition, I added a constraint function to avoid an arithmetic
>>> overflow by its maximum value.
>>>
>>> CR: https://bugs.openjdk.java.net/browse/JDK-8145312
>>> Webrev: http://cr.openjdk.java.net/~sangheki/8145312/webrev.00/
>>> Testing: JPRT, RBT for all platforms including embedded
>>>
>>> Thanks,
>>> Sangheon
>>
>
More information about the hotspot-gc-dev
mailing list