Regarding Humongous Allocation - G1GC

Stefan Johansson stefan.johansson at oracle.com
Wed Aug 28 11:30:13 UTC 2024


Hi Ravi,

I'm not sure we actually have humongous allocation failures here. In G1, 
when doing a humongous allocation, there is a check if we should start a 
concurrent marking cycle before doing the humongous allocations. We will 
do the "G1 Humongous Allocation" gc if the G1 policy consider the memory 
usage to be too high. So when having a lot of humongous allocations is 
not uncommon to see these types of collections.

The G1New JFR events corresponds to the young collection that kicks off 
the concurrent marking. The concurrent marking then sends the G1Old 
event. The reason they have the same start time is that the concurrent 
marking is viewed as being started by the young collections.

The humongous allocations do happen in the old generation from the point 
of view that they aren't included in the normal young collections but in 
JDK 8 they are actually never moved by any collection.

Hope this helps,
StefanJ


On 2024-08-28 09:50, Ravi wrote:
> if we look at the timestamps, both of them are happening at the same time.
> 
> On Wed, Aug 28, 2024 at 12:27 PM Kim Barrett <kim.barrett at oracle.com 
> <mailto:kim.barrett at oracle.com>> wrote:
> 
>     __
> 
>     On 8/27/24 5:04 AM, Ravi wrote:
> 
>>     Dear Experts,
>>
>>     We have an application running on jre 1.8u261 with the below jvm
>>     arguments:
>>      -Xms8g -Xmx8g -XX:MetaspaceSize=2g -XX:MaxMetaspaceSize=2g
>>     -XX:+UseG1GC -XX:ParallelGCThreads=2 -XX:ConcGCThreads=1
>>     -XX:+PrintFlagsFinal
>>
>>     From the jfrs, we could see Humongous allocation failures are
>>     happening in the G1New and aswell G1Old spaces:
> 
>     I think humongous allocation failure will first attempt a young
>     collection.
>     This may free regions, potentially resulting in a sequence of free
>     regions
>     sufficient to satisfy the humongous allocation request. Only if that
>     fails is
>     a full collection performed.  That seems to be what your trace
>     shows, e.g. a
>     fill (G1Old) collection occurring shortly after the young (G1New)
>     collection
>     in each case.
> 
> 
> _______________________________________________
> hotspot-gc-use mailing list
> hotspot-gc-use at openjdk.org
> https://mail.openjdk.org/mailman/listinfo/hotspot-gc-use


More information about the hotspot-gc-use mailing list