java.lang.OutOfMemoryError: Komprimiert Klasse Platz

Sind wir running auf java-8-oracle.

Zogen wir in java8 sechs Monaten.

In den letzten Tagen haben wir immer ein OOME von Zeit zu Zeit, und wir waren nicht in der Lage, Sie zu identifizieren oder reproduzieren Sie das problem.

Wenn wir führen einen Aufruf an den server (tomcat) wir bekommen das der Fehler auf der stacktrace:

java.lang.OutOfMemoryError: Compressed class space

Neustart des Servers löst das problem. Der gleiche Aufruf auf anderen server funktioniert, und so hat ein weiterer Aufruf von einem anderen Typ auf dem gleichen server.

Wenn man auf der gc.log-sehen wir:

2015-05-27T16:05:42.991+0000: 98774.440: [Full GC (Last ditch collection) 98774.440: [CMS: 575745K->575330K(3495936K), 0.8687777 secs] 575745K->575330K(4107008K), [Metaspace: 97940K->97940K(1396736K)], 0.8696093 secs] [Times: user=0.95 sys=0.00, real=0.88 secs]
2015-05-27T16:05:55.486+0000: 98786.935: [Full GC (Metadata GC Threshold) 98786.935: [CMS: 573414K->578735K(3495936K), 0.9372859 secs] 925046K->578735K(4107008K), [Metaspace: 99428K->99428K(1396736K)], 0.9386626 secs] [Times: user=1.01 sys=0.00, real=0.94 secs]

jstat -gc gibt:

 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
87296.0 87296.0  0.0   3151.4 523776.0 148284.4 3495936.0   574868.5  1395640.0 98066.3 1048576.0 11339.1  12165  636.851  223   116.957  

753.808

Sehe ich keine Probleme mit dem Speicher, entweder in der jstat-Protokoll oder in der gc-log.

Versuchen zu laufen jmap -clstats hängt:

Attaching to process ID 5110, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.25-b02
finding class loader instances ..
Mit dem Xms-und-Xmx-Schaltern starten Sie die JVM ? Ich empfehle, verwenden Sie visualvm oder ein ähnliches Werkzeug, um besser zu sehen und zu erfahren, wie Sie Ihre JVM-Größen eingerichtet sind. Oder mit Eclipse Memory Analyzer. Für die Zeit können Sie versuchen, erhöhen Sie die komprimierte Klassen Raum mit -XX: CompressedClassSpaceSize. Besser das problem analysieren, sollten Sie die JVM-heap-dump auf OOME.
Nach welchen Zeitraum sehen Sie diese Ausnahme? Haben Sie versucht, die Erhöhung der CompressedClassSpace? e.g: -XX: CompressedClassSpaceSize=1g ? Wenn Sie sehen, dass das problem wieder, aber nach einer längeren Zeit, die Sie zu haben scheinen, ein Speicher-Leck von einer Art sein.
ersten mal begegnen, vor 2 Tagen in einem der server (die wir nicht bereitstellen, neue version). Server-Neustart und als es sah wieder nach 12 Stunden nur auf einem der Server. Belastung dosnt helfen, sich zu reproduzieren. Die Kompresse Größe ist bleiben fast die gleichen und es nicht näher 1G, das ist die Standardeinstellung.
Dies könnte ein JVM-Fehler. Es ist ein andauernder hotspot-gc-dev Diskussion von einem problem mit ähnlichen Symptomen. Versuchen Sie tuning der Metaspace wachsen-schrumpfen-Politik.

InformationsquelleAutor user1236097 | 2015-05-28

Schreibe einen Kommentar