RFR 8085965: VM hangs in C2Compiler
Kim Barrett
kim.barrett at oracle.com
Tue Jun 16 20:45:44 UTC 2015
On Jun 16, 2015, at 4:30 PM, Poonam Bajaj Parhar <poonam.bajaj at oracle.com> wrote:
>
>>> With your changes try
>>>
>>> java -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses -XX:-ClassUnloading -XX:+UseConcMarkSweepGC -XX:+PrintFlagsFinal -version
>>>
>>> and check if ExplicitGCInvokesConcurrent is true or false.
>>>
>>> If it is true, I don't know if that is the right thing to do. In this case on the
>>> command line ExplicitGCInvokesConcurrentAndUnloadsClasses has been
>>> set to true and ClassUnloading has been set to false. As a side effect,
>>> ExplicitGCInvokesConcurrent is set to true. Whereas ExplicitGCInvokesConcurrentAndUnloadsClasses
>>> has been set back to false (probably) That may be a surprise to the
>>> users.
>>>
>> For CMS, ExplicitGCInvokesConcurrent won't get set to true if ClassUnloading is false. In the argument parsing we would set ExplicitGCInvokesConcurrentAndUnloadsClasses to false and while constructing CMSCollector, we set ExplicitGCInvokesConcurrent.
>>
>> if (ExplicitGCInvokesConcurrentAndUnloadsClasses) {
>> ExplicitGCInvokesConcurrent = true;
>> }
>>
>> I am testing it to confirm.
>>
> Here's the result:
>
> java -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses -XX:-ClassUnloading -XX:+UseConcMarkSweepGC -XX:+PrintFlagsFinal -version
> [Global flags]
> uintx AdaptiveSizeDecrementScaleFactor = 4 {product}
> ...
> bool CMSClassUnloadingEnabled := false {product}
> ...
> bool ClassUnloading := false {product}
> ...
> bool ExplicitGCInvokesConcurrent = false {product}
> bool ExplicitGCInvokesConcurrentAndUnloadsClasses := false {product}
Thanks.
Changes look good to me. There is further followup to be done, but I think this change can go ahead.
More information about the hotspot-gc-dev
mailing list