The JVM starts the old generation garbage collection when the old gene is "empty",

I have an application for a Clojure application that has many memory crashes for large heap allocations, so it installed opts JVM accordingly:

-Xmx13g -XX:+UseConcMarkSweepGC -XX:NewSize=10G -server -XX:+UseParNewGC

This works most of the time and avoids problems when the new gene overflows into the old gene (sometimes it still makes it a surviving generation, but not always), but sometimes we see situations like the image where the JVM starts the CMS / old garbage collection is very difficult when the new generation is full. It is my understanding, however, that this must be handled by a new generation of garbage collector.

enter image description here

. , , , ? - , , / GC, ?

ETA: OpenJDK 8.

ETA 2: GC: https://gist.github.com/gworley3/6abb9ab52320c6cbd508

+4
1

:

CMS 10GB Young Gen, . CMS, :

‑XX:+UseCMSInitiatingOccupancyOnly ‑XX:CMSInitiatingOccupancyFraction=<K>

K - .

:

Oracle CMS:

CMS . , , (, , ..) (, ). . , - , CMS . .

CMS , Young Gen . , , 5 ParNew 0,25 . .

<190>1 2015-12-18T08:44:54.194216+00:00 host app web.1 - [GC[YG occupancy: 489826 K (9437184 K)][Rescan (parallel) , 0.2520950 secs][weak refs processing, 0.0000180 secs][scrub string table, 0.0008190 secs] [1 CMS-remark: 64504K(107240K)] 554330K(9544424K), 0.2530410 secs] [Times: user=1.95 sys=0.02, real=0.25 secs]

<190>1 2015-12-18T08:44:49.937257+00:00 host app web.1 - [GC[ParNew:   8418004K->93508K(9437184K), 0.0488580 secs] 8482343K->158013K(9544424K), 0.0489980 secs] [Times: user=0.33 sys=0.00, real=0.05 secs]

<190>1 2015-12-18T08:44:48.651086+00:00 host app web.1 - [GC [1 CMS-initial-mark: 64339K(107240K)] 7800216K(9544424K), 5.0756660 secs] [Times: user=5.08 sys=0.00, real=5.08 secs]

CMS, , , . CMS .

+2

Source: https://habr.com/ru/post/1619411/


All Articles