RFR(xs): 8149405: OOM Error running java/lang/invoke/MethodHandlesTest.java on windows-x86

Jon Masamitsu jon.masamitsu at oracle.com
Wed Mar 23 20:10:11 UTC 2016



On 03/23/2016 11:59 AM, Derek White wrote:
> Hi Jon,
>
> On 3/23/16 2:12 PM, Jon Masamitsu wrote:
>> Derek,
>>
>> http://cr.openjdk.java.net/~drwhite/8149405/webrev.01/src/share/vm/oops/methodData.cpp.udiff.html
>>
>>>   void MethodData::clean_method_data(BoolObjectClosure* is_alive) {
>>> + ResourceMark rm;
>>>     for (ProfileData* data = first_data();
>>>          is_valid(data);
>>>          data = next_data(data)) {
>>>       data->clean_weak_klass_links(is_alive);
>>>     }
>>
>> The clean_weak_klass_links() above has a ResourceMark in it.
>>
>>> void DataLayout::clean_weak_klass_links(BoolObjectClosure* cl) {
>>>   ResourceMark m;
>>>   data_in()->clean_weak_klass_links(cl);
>>> }
>>
>> It's not clear to me where space is being allocated in 
>> clean_method_data() so
>> that the ResourceMark helps.  My understanding of ResourceMarks is thin
>> so don't assume there is anything deep about this question.
>>
>> Jon
>>
> You're right, it isn't clear where space is being allocated without 
> doing detective work. I didn't see any conventions w.r.t 
> documentation, naming, type signatures, etc that would help.

Right.  I don't have any ideas either.  Just out of curiosity, did you
try Native-Memory-Tracking with any enlightening results?


>
> The problem is that the iterators first_data()/next_data() allocate 
> also, as well as other functions called further down: 
> parameters_type_data(), clean_extra_data(), clean_extra_data().

I think the change itself is correct and reasonable given the
circumstances.

Reviewed.

Jon

>
>  - Derek
>> On 03/23/2016 08:02 AM, Derek White wrote:
>>> This is a very small fix that adds ResourceMarks to 
>>> MethodData::clean_method_data() (and two similar functions nearby).
>>>
>>> Basically an iteration over all classes in all methods in all 
>>> classes was occurring in one ResourceMark during a full gc, so we 
>>> occasionally ran out of malloc space.
>>>
>>> Once again, x86 builds running on Win64 are the "canary in the coal 
>>> mine" for these kinds of temp. memory leaks, so it's a great test 
>>> case even if not a very realistic one!
>>>
>>> BUG: https://bugs.openjdk.java.net/browse/JDK-8149405
>>> WEBREV: http://cr.openjdk.java.net/~drwhite/8149405/webrev.01/
>>> TESTS: jprt
>>>
>>> Thanks for looking,
>>>
>>>  - Derek
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20160323/0933e670/attachment.htm>


More information about the hotspot-gc-dev mailing list