When will G1 GC allocate objects in old generation directly

Thomas Schatzl thomas.schatzl at oracle.com
Thu Jan 30 16:39:06 UTC 2020


Hi,

On 30.01.20 17:05, Roy Zhang wrote:
> Dear JVM experts,
> 
> In my gc log, there are many objects are allocated to old generations 
> (ALLOC(Old) logs), current threshold is 15, my objects age is only 1, 
> i.e, these objects will not be promoted to old generations, i guess is 
> there any condition when objects will be allocated to old generations 
> directly in G1 GC? Thanks in advance!
> 
> *Excerpt of GC log:*
> 
> grep "ALLOC(Old)" gc.log | wc -l
> 387
> grep "thres" gc.log
> Desired survivor size 1207959552 bytes, new threshold 15 (max 15)
> Desired survivor size 1207959552 bytes, new threshold 15 (max 15)
> - age   1:   37707272 bytes,   37707272 total
> 
> *JDK version: *
> openjdk version "1.8.0_222"
> OpenJDK Runtime Environment (build 1.8.0_222-b10)
> OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
> 

   G1 only allocates humongous (large) objects directly in old gen, or 
during young gc if the object has an age > the current threshold, or if 
the survivor space is full.

(Or during evacuation failure, i.e. not enough space to copy young gen 
objects somewhere else, entire regions including their live content are 
relabelled as old gen, which is similar to "allocate" objects in old gen.

 From the log snippet you can't tell what happens here.

Thanks,
   Thomas


More information about the hotspot-gc-use mailing list