java.lang.OutOfMemoryError: сжатое пространство классов
Мы работаем на Java-8-оракуле.
Мы переехали на java8 шесть месяцев назад.
В последние несколько дней мы время от времени получали OOME, и нам не удалось выявить или воспроизвести проблему.
Когда мы выполняем вызов к серверу (tomcat), мы получаем эту ошибку на трассировке стека:
java.lang.OutOfMemoryError: Compressed class space
Перезапуск сервера решает проблему. Работает тот же вызов другому серверу, как и другой вызов другого типа на тот же сервер.
При просмотре gc.log мы видим:
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
возвращает:
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
Я не вижу проблем с памятью ни в журнале jstat, ни в журнале gc.
Пытаясь бежатьjmap -clstats
висит:
Attaching to process ID 5110, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.25-b02
finding class loader instances ..