ConcMarkSweepGC on Solaris 64-bit (Java6u21)

boernd

Mitglied
Hallo,

ich habe auf einem Solaris Server eine JVM im 64-bit Modus laufen (Java6 Update 21), folgendes Problem, das ich momentan nicht ganz verstehe.

Der JVM werden folgende wichtigeren Startparameter mitgegeben:

JAVA_OPTS="-XX:MaxPermSize=512M -Xms4096m -Xmx4096m -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:/pfad/zum/log/verzeichnis/gc.log -XX:NewSize=1024M -XX:MaxNewSize=1024M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC"

JAVA_OPTS="$JAVA_OPTS -d64"

Im Garbage Collection Log sehe ich dann meiner Meinung nach aber nur "normale" Full GCs. Ich habe auch beobachtet, dass während eines Full GC Zyklus die Applikationsthreads angehalten werden:

503012.826: [Full GC 503012.826: [CMS: 950212K->642670K(3145728K), 21.2671501 secs] 1128352K->642670K(4089472K), [CMS Perm : 459792K->185997K(459792K)], 21.26
80455 secs] [Times: user=21.30 sys=0.03, real=21.27 secs]

Ich habe auch noch andere Server laufen (allerdings Java 5, Linux u. 32-bit System), wo bei den CMS Collections der Output z.B. so aussieht:

1792.778: [GC [1 CMS-initial-mark: 395561K(786432K)] 414372K(1015808K), 0.0444870 secs]
1792.823: [CMS-concurrent-mark-start]
1794.423: [CMS-concurrent-mark: 1.600/1.600 secs]
1794.423: [CMS-concurrent-preclean-start]
1794.425: [CMS-concurrent-preclean: 0.002/0.002 secs]
1794.427: [GC[YG occupancy: 19478 K (229376 K)]1794.427: [Rescan (parallel) , 0.0202130 secs]1794.447: [weak refs processing, 0.0395980 secs] [1CMS-remark: 395561K(786432K)] 415039K(1015808K), 0.0659470 secs]
1794.493: [CMS-concurrent-sweep-start]
1795.010: [CMS-concurrent-sweep: 0.517/0.517 secs]
1795.011: [CMS-concurrent-reset-start]
1795.065: [CMS-concurrent-reset: 0.053/0.053 secs]

Verstehe ich da was falsch bzw. hat jemand von euch eine Idee?

Danke u. lg
Bernd
 

boernd

Mitglied
Naja meiner Meinung nach funktioniert die CMS-Collection für den alten Speicherbereich nicht, sondern führt eine Stop-the-world Full GC durch, wo alle Applikationsthreads in dem Zeitraum angehalten werden. Bei einer Dauer von 20 Sek. nicht so wünschenswert. lg
 

boernd

Mitglied
Hi,

falls es jemanden interessiert, scheinbar steht das Problem in Zusammenhang mit dem Perm Gen Bereich (wird scheinbar von Full GC aufgeräumt standardmäßig). Änderungen, die das Problem jetzt mal bei mir behoben haben

- Resizing Perm Gen

Weitere Optionen:
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+CMSParallelRemarkEnabled
-XX:CMSInitiatingOccupancyFraction=40

Interessanter Link:
Java Garbage Collection : Unexpected Full GC

lg
Bernd
 

Ähnliche Java Themen

Neue Themen


Oben