ParNew gc会阻止世界吗?

时间:2010-12-10 08:05:27

标签: java garbage-collection

我看到GC输出如下:

2010-12-10T16:00:44.942+0800: 1443.562: [GC 1443.562: [ParNew: 201856K->17318K(201856K), 0.0352970 secs] 2113334K->1949037K(4416748K) icms_dc=0 , 0.0354310 secs] [Times: user=0.12 sys=0.00, real=0.04 secs]
2010-12-10T16:00:46.207+0800: 1444.827: [GC 1444.827: [ParNew: 196774K->22400K(201856K), 0.0119290 secs] 2128493K->1954446K(4416748K) icms_dc=0 , 0.0120560 secs] [Times: user=0.13 sys=0.00, real=0.02 secs]
2010-12-10T16:00:47.562+0800: 1446.182: [GC 1446.182: [ParNew: 201856K->22400K(201856K), 0.0714350 secs] 2133902K->1982695K(4416748K) icms_dc=0 , 0.0715720 secs] [Times: user=0.23 sys=0.01, real=0.07 secs]
2010-12-10T16:00:48.545+0800: 1447.165: [GC 1447.165: [ParNew: 201856K->22400K(201856K), 0.1457230 secs] 2162151K->2008418K(4416748K) icms_dc=0 , 0.1458710 secs] [Times: user=0.71 sys=0.05, real=0.15 secs]

我想知道ParNew GC是否会停止所有线程。感谢。

4 个答案:

答案 0 :(得分:42)

Jon Masamitsu's blog说得非常清楚

  

“ParNew”是一个停止世界,复制   使用多个GC的收集器   线程。

在您展示的示例中,虽然时间相当快,但

答案 1 :(得分:8)

是的,ParNew是一个收集年轻一代的“世界停止”系列。由于年轻一代的体型通常很小,因此收集速度非常快,不应过多影响您的应用。

答案 2 :(得分:2)

是的,这是阻止世界的。在您的示例中,您将看到方括号内的暂停时间。它通常与实时相同。用户? time是GCing中花费的实际CPU时间。它可能比使用并行性时的实时大得多。在你的情况下,它看起来像4个GC线程。

答案 3 :(得分:0)

是的,它会停止,但这个世界虽然取决于您的堆大小和应用程序,但看起来您可以使用更大的newGen大小。你每分钟做一次小GC。较大的newGen大小并不一定意味着您将有更长的次要GC时间。虽然好处是你不会推销很快会死于旧Gen的物品。当需要一个完整的gc时,你可以删除更少的物品,减少停机时间。