web-dev-qa-db-fra.com

ParNew gc va arrêter le monde?

Je vois la sortie GC comme ci-dessous:

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]

Je veux savoir si ParNew GC va arrêter tous les threads. Merci.

21
user537555

Le blog de Jon Masamitsu le dit très clairement

"ParNew" est un collecteur stop-the-world, copiant , Qui utilise plusieurs threads GC .

Dans l'exemple que vous avez montré, les timings sont assez rapides, bien que

42
JoseK

Oui, ParNew est une collection "stop-the-world" qui rassemble la jeune génération. Étant donné que la jeune génération est normalement de petite taille, la collecte devrait être très rapide et ne devrait pas trop affecter votre application.

8
dogbane

Oui, c'est arrêter le monde. Dans votre exemple, vous verrez le temps de pause entre crochets. C'est généralement la même chose que le temps réel. L'utilisateur? time est le temps CPU réel passé en GCing. Il peut être beaucoup plus grand que le temps réel lorsque la parallélité est utilisée. Dans votre cas, cela ressemble à 4 threads GC.

2
eckes

Oui, le monde s'arrête, même si, en fonction de la taille de votre tas et de votre application, vous pouvez utiliser une plus grande taille de newGen. Vous faites des GC mineures à chaque minute. Une taille plus grande de newGen ne signifie pas nécessairement que vous aurez une durée de GC mineure plus longue. Bien que l’avantage soit que vous ne promouverez pas d’objets qui mourront bientôt au Vieux Gén. Lorsque le moment sera venu pour un gc complet, vous aurez moins d’objets à supprimer et moins de temps d’immobilisation.

0
Rostam