RFR: 8255232: G1: Make G1BiasedMappedArray freeable

Thomas Schatzl tschatzl at openjdk.java.net
Thu Oct 29 09:15:43 UTC 2020


On Thu, 29 Oct 2020 09:00:00 GMT, Albert Mingkun Yang <ayang at openjdk.org> wrote:

>> Hi all,
>> 
>>   can I have reviews for this change that makes G1BiasedMappedArray freeable?
>> 
>> Previously all G1BiasedMappedArray were created as unfreeable i.e. assigned to static variables. However with JDK-8253600 I need one such biased map for the full collector which is created and deleted during full GC. So the biased array should also be freed as necessary to avoid a memory leak.
>> 
>> The alternative would be to statically allocate that map anyway and provide it to the current G1FullCollector instance, but I do not think the single malloc call is perf sensitive compared to full collector work and there is much point in doing something more complicated at this time. In the future I hope that the young gen collector will also be extracted from G1CollectedHeap with the same need. If/when allocation of these helper data structures becomes a problem I would suggest looking into this again.
>> 
>> One option then could be using some ResoureArea for these things in the future.
>> 
>> For this change there should be no change in behavior at all.
>> 
>> Testing: tier1-5
>> 
>> Thanks,
>>   Thomas
>
> src/hotspot/share/gc/g1/g1BiasedArray.cpp line 46:
> 
>> 44:     _bias = 0;
>> 45:     _shift_by = 0;
>> 46:   }
> 
> 1. `FreeHeap` makes more sense to me, since the allocation sites uses `AllocateHeap`.
> 2. Why resetting those fields to zero? The only resource we need to release in this destructor is memory, right?

1. Will fix.
2. Some debugging code to see if anyone else is using it after the freeing as previously these tables were never freed - I was not sure if I should keep them or not so I want to see if anyone would complain :) I'll remove these then.

-------------

PR: https://git.openjdk.java.net/jdk/pull/808


More information about the hotspot-dev mailing list