RPJ
RPJ

Reputation: 39

Java GC Promotion Failures

I have a 16G Heap size, with Young Gen = 4G and Old Gen = 12G on Java 6u43. I saw the following promotion failure.

Whats interesting is right before the failure happened, the old gen size dropped from 12G to 9G, and young gen dropped from 3.4G to 0.3. But still promotion failed.

My CMSIntitiatingOccupancyFraction = 75% and CMSInitiatingOccupancyOnly=true. Any help will be appreciated

2014-04-15T06:11:37.275-0400: 200306.377: [GC 200306.377: [ParNew
Desired survivor size 214728704 bytes, new threshold 15 (max 15)
  58106 - age   1:      27984 bytes,      27984 total
  58107 - age   2:  111513120 bytes,  111541104 total
  58108 - age   3:   28811760 bytes,  140352864 total
  58109 - age   4:   32949056 bytes,  173301920 total
  58110 : 266825K->240137K(3774912K), 0.0547210 secs] 9338952K->9312265K(16357824K), 0.0551270 secs] [Times: user=0.95 sys=0.00, real=0.05 secs]
  58111 2014-04-15T06:11:49.838-0400: 200318.940: [GC 200318.940: [ParNew
  58112 Desired survivor size 214728704 bytes, new threshold 3 (max 15)
  58113 - age   1:  136690632 bytes,  136690632 total
  58114 - age   2:       1768 bytes,  136692400 total
  58115 - age   3:  110476248 bytes,  247168648 total
  58116 - age   4:   26402960 bytes,  273571608 total
  58117 - age   5:   33863440 bytes,  307435048 total

[Times: user=1.69 sys=0.00, real=0.10 secs]
  58119 2014-04-15T06:11:57.424-0400: 200326.526: [GC 200326.526: [ParNew (0: promotion failure size = 6)  (1: promotion failure size = 6)  (2: promotion failure size = 6)  (3: promotion failure size = 6)  (        4: promotion failure size = 6)  (5: promotion failure size = 6)  (6: promotion failure size = 6)  (7: promotion failure size = 6)  (8: promotion failure size = 12)  (9: promotion failure size = 6)  (        10: promotion failure size = 6)  (11: promotion failure size = 6)  (12: promotion failure size = 6)  (13: promotion failure size = 6)  (14: promotion failure size = 12)  (15: promotion failure size =         6)  (16: promotion failure size = 12)  (17: promotion failure size = 6)  (promotion failed)

Upvotes: 3

Views: 1099

Answers (1)

Eugene
Eugene

Reputation: 120848

CMS does not do any fragmentation of the heap when it collects in old generation. So, you might have enough free space, but it is not contiguous, thus the failure.

I assume that after this you will get a long full GC call, that will result in a long Stop-The-World event for the entire tenured space; GC does fragmentation.

EDIT You can try to decrease the young gen size and increase the old gen size or you can try the G1 collector that does compact the heap (not entirely though) on each step.

Upvotes: 1

Related Questions