RFR:(XS): Small enhancement for large allocation

Zhengyu Gu zgu at redhat.com
Fri Dec 16 15:11:44 UTC 2016


Agree!

http://cr.openjdk.java.net/~zgu/shenandoah/large_alloc/webrev.01/

-Zhengyu


On 12/16/2016 09:48 AM, Aleksey Shipilev wrote:
> On 12/16/2016 03:40 PM, Zhengyu Gu wrote:
>> When large allocation fails, current implementation only grows heap by 1 and
>> retry. This is slightly inefficient.
>> We can grow the heap by required regions at once, to avoid unnecessary loop.
>>
>> http://cr.openjdk.java.net/~zgu/shenandoah/large_alloc/webrev.00/
> Been meaning to fix that! Shouldn't we instead fix the logic in
> ShenandoahHeap::allocate_memory_work, and not try to do another grow_heap_by in
> downcall to allocate_memory_under_lock -> allocate_large_memory?
>
>
> HeapWord* ShenandoahHeap::allocate_memory_work(size_t word_size) {
>    ShenandoahHeapLock heap_lock(this);
>
>    HeapWord* result = allocate_memory_under_lock(word_size);
>    while (result == NULL && _num_regions < _max_regions) {
>      grow_heap_by(1); // <--- depend on word_size here
>      result = allocate_memory_under_lock(word_size);
>    }
>
>    return result;
> }
>
> Thanks,
> -Aleksey
>



More information about the shenandoah-dev mailing list