RFR: 8154096: Extend WhiteBox API with methods which retrieve from VM information about available GC

Dmitry Fazunenko dmitry.fazunenko at oracle.com
Fri Apr 22 15:18:11 UTC 2016


Kirill,

I will put the following doc on the method:

/** * Checks if the current GC was selected by ergonomic among others. * 
Note: if VM supports only one GC this method will always return false. * 
@returns true if GC was selected by ergonomic, false if specified by 
command line flag. */ public boolean gcSelectedByErgo() {


Thanks,
Dima

On 22.04.2016 17:56, Kirill Zhaldybin wrote:
> Dmitry,
>
> On 22.04.2016 17:39, Dmitry Fazunenko wrote:
>> Hi Kirill,
>>
>> thanks for looking at the code.
>>
>> On 22.04.2016 17:24, Kirill Zhaldybin wrote:
>>> Dmitry,
>>>
>>> http://cr.openjdk.java.net/~dfazunen/8154096/webrev.00/test/test/lib/sun/hotspot/WhiteBox.java.sdiff.html 
>>>
>>>
>>>
>>>  157   // GC
>>>  158   /**
>>>  159    * @returns true if GC was selected by ergonomic
>>>  160    */
>>>  161   public boolean gcSelectedByErgo() {
>>>  162     if (getSupportedGC().size() < 2) {
>>>  163       return false; // nothing to choose from
>>>  164     } else {
>>>  165       return gcSelectedByErgo0();
>>>  166     }
>>>  167   }
>>>
>>>
>>> If only one GC is supported why it cannot be selected by ergonomics?
>>> My understanding that if jvm is started without gc flag gc is selected
>>> by ergonomics even if there is only one supported gc.
>>
>> This API will be needed to set @requires properties. If an XXX gc is
>> selected by ergo it means it's not specified explicitly by
>> -XX:+UseXXXGC, it means -XX:+UseYYYGC could be given without flag
>> conflict. If an XXX is the only one GC it could be treated as if XXX
>> selected by flag, and no other collectors are allowed.
> Thank you for detailed explanation.
> Would you mind to add it as a comment to code?
> Otherwise looks good.
>
> Regards, Kirill
>
>>
>> Thanks,
>> Dima
>
>>
>>
>>
>>>
>>> Thank you.
>>>
>>> Regards, Kirill
>>>
>>> On 13.04.2016 17:54, Dmitry Fazunenko wrote:
>>>> Hello,
>>>>
>>>> I'm looking for a couple of reviews of the change extending the 
>>>> WhiteBox
>>>> API to retrieve information about
>>>> supported collectors and how the collector was selected.
>>>>
>>>> https://bugs.openjdk.java.net/browse/JDK-8154096
>>>> http://cr.openjdk.java.net/~dfazunen/8154096/webrev.00/
>>>>
>>>> This change is required to improve work of the jtreg @requires. Now
>>>> jtreg sets vm.gc property
>>>> based on the given flags (matching VM options  for -XX:+Use???GC
>>>> pattern).  The extended WhitBox API
>>>> will allow us to set properties like:
>>>>      vm.supportsSerialGC
>>>>      vm.supportsParallelGC
>>>>      vm.supportsConcMarkSweeGC
>>>>      vm.supportsG1GC
>>>>
>>>> And use in test more reliable expression:
>>>>    @requires vm.supportsG1GC
>>>> instead of
>>>>    @requires vm.gc == null | vm.gc == "G1"
>>>>
>>>> The following CRs are blocked by this RFE.
>>>> JDK-8151283 <https://bugs.openjdk.java.net/browse/JDK-8151283>:
>>>> Implement setting jtreg @requires property vm.isG1Supported.
>>>> JDK-8153758 <https://bugs.openjdk.java.net/browse/JDK-8153758> :
>>>> @requires should use more accurate GC type parsing.
>>>>
>>>> Tested locally.
>>>>
>>>> Thanks,
>>>> Dima
>>>
>>
>



More information about the hotspot-gc-dev mailing list