young gc time
the.6th.month at gmail.com
the.6th.month at gmail.com
Mon Nov 5 19:19:30 PST 2012
Hi, Florian:
Yeah, as I observe it, the cms full gc frequency is quite low, which
happens at an interval of 40 mins or 1 hr, and hence to reduce young gen
size is acceptable. But I don't quite understand why copying 70m data from
one survivor to another would be such an expensive operation.
All the best,
Leon
On 5 November 2012 23:52, Florian Binder <java at java4.info> wrote:
> Hi Leon,
>
> there are always about 70mb in your survivor space which are copied on
> every young collection. I think this is the most expensive operation.
> You can reduce this by reducing the new gen size or the max threshold.
> Both will yield in more objects (soon garbage) getting promoted into the
> old generation.
> Since you are using the CMS-collector this might affect fragmentation and
> a little bit more overhead (more old collections).
>
> I would suggest to reduce the new gen size, because this increases the old
> gen size as well, which reduces fragmentation.
>
> /Flo
>
>
> Am 05.11.2012 09:43, schrieb the.6th.month at gmail.com:
>
> hi,all:
>
> I am using ParNew gc in our prod env, and I notice that the young gc
> time is consistently high. I am wondering whether there is a way to lower
> young gc time.
> Through monitoring JMX garbage collection metrics, we found that the par
> new gc time was roughly 150~200ms per par new gc, and the par new gc
> happened every 15-20 seconds.
> I paste a snippet of gc log below:
> : 864507K->87635K(917504K), 0.1231380 secs]
> 3699003K->2931949K(4476928K), 0.1236430 secs] [Times: user=0.43 sys=0.00,
> real=0.12 secs]
> 2012-11-05T16:23:23.949+0800: 236482.439: [GC 236482.439: [ParNew
> Desired survivor size 67108864 bytes, new threshold 6 (max 6)
> - age 1: 17253464 bytes, 17253464 total
> - age 2: 14360944 bytes, 31614408 total
> - age 3: 25430792 bytes, 57045200 total
> - age 4: 2902680 bytes, 59947880 total
> - age 5: 5009480 bytes, 64957360 total
> - age 6: 5909656 bytes, 70867016 total
> : 874067K->90642K(917504K), 0.1477390 secs] 3718381K->2938612K(4476928K),
> 0.1481920 secs] [Times: user=0.53 sys=0.00, real=0.15 secs]
> 2012-11-05T16:23:44.631+0800: 236503.121: [GC 236503.121: [ParNew
> Desired survivor size 67108864 bytes, new threshold 6 (max 6)
> - age 1: 15747824 bytes, 15747824 total
> - age 2: 15988992 bytes, 31736816 total
> - age 3: 10270928 bytes, 42007744 total
> - age 4: 20606448 bytes, 62614192 total
> - age 5: 2049256 bytes, 64663448 total
> - age 6: 4744976 bytes, 69408424 total
> : 877074K->100618K(917504K), 0.1410630 secs] 3725044K->2954405K(4476928K),
> 0.1414400 secs] [Times: user=0.48 sys=0.00, real=0.14 secs]
> 2012-11-05T16:24:15.290+0800: 236533.780: [GC 236533.781: [ParNew
> Desired survivor size 67108864 bytes, new threshold 5 (max 6)
> - age 1: 19065656 bytes, 19065656 total
> - age 2: 12890184 bytes, 31955840 total
> - age 3: 15095912 bytes, 47051752 total
> - age 4: 8298736 bytes, 55350488 total
> - age 5: 15055264 bytes, 70405752 total
> - age 6: 1900328 bytes, 72306080 total
>
> and here is the output from jmap -heap:
> Server compiler detected.
> JVM version is 20.1-b02
>
> using parallel threads in the new generation.
> using thread-local object allocation.
> Concurrent Mark-Sweep GC
>
> Heap Configuration:
> MinHeapFreeRatio = 40
> MaxHeapFreeRatio = 70
> MaxHeapSize = 4718592000 (4500.0MB)
> NewSize = 1073741824 (1024.0MB)
> MaxNewSize = 1073741824 (1024.0MB)
> OldSize = 5439488 (5.1875MB)
> NewRatio = 2
> SurvivorRatio = 6
> PermSize = 205520896 (196.0MB)
> MaxPermSize = 205520896 (196.0MB)
>
> Heap Usage:
> New Generation (Eden + 1 Survivor Space):
> capacity = 939524096 (896.0MB)
> used = 668354776 (637.3927841186523MB)
> free = 271169320 (258.60721588134766MB)
> 71.13758751324245% used
> Eden Space:
> capacity = 805306368 (768.0MB)
> used = 602192224 (574.2952575683594MB)
> free = 203114144 (193.70474243164062MB)
> 74.77802832921346% used
> From Space:
> capacity = 134217728 (128.0MB)
> used = 66162552 (63.09752655029297MB)
> free = 68055176 (64.90247344970703MB)
> 49.29494261741638% used
> To Space:
> capacity = 134217728 (128.0MB)
> used = 0 (0.0MB)
> free = 134217728 (128.0MB)
> 0.0% used
> concurrent mark-sweep generation:
> capacity = 3644850176 (3476.0MB)
> used = 3004386160 (2865.2059173583984MB)
> free = 640464016 (610.7940826416016MB)
> 82.42824848556957% used
> Perm Generation:
> capacity = 205520896 (196.0MB)
> used = 110269304 (105.16100311279297MB)
> free = 95251592 (90.83899688720703MB)
> 53.65357301673111% use
>
> Given the card-table mechanism hotspot adopts for young gc, as our old
> gen is around 3.5 gigabytes, each young gc should go through 7m card table
> scans, I am wondering whether that's the reason behind the relatively slow
> young gc?
>
> Any advice? Thanks
>
> All the best,
> Leon
>
>
> _______________________________________________
> hotspot-gc-use mailing listhotspot-gc-use at openjdk.java.nethttp://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use
>
>
>
> _______________________________________________
> hotspot-gc-use mailing list
> hotspot-gc-use at openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-gc-use/attachments/20121106/7d282e32/attachment.html
More information about the hotspot-gc-use
mailing list