ich verwende Java: 1.8.0_271 und Tomcat: 9.0.39
Es gibt eine Reihe von Diensten auf Tomcat, nach einer gewissen Zeit bemerke ich einen OutOfMemoryError-Fehler in den Protokollen und tatsächlich ist der gesamte Speicher aufgebraucht. Gleichzeitig wird der Speicher freigegeben, wenn ich die Garbage Collection manuell von visualvm aus starte.
Der Dump zeigt nichts an, analysiert JProfiler und MAT – er scheint den verwendeten Speicher abzuschneiden, so dass nur noch wenig frei bleibt.
Und dennoch wird nach dem Neustart aller Dienste einzeln der Speicher immer noch nicht freigegeben, Sie müssen Tomcat neu starten
meine GP-Parameter (ich habe mit anderen experimentiert, aber mit nein verfügbar)
Code: Select all
-XX:+UseG1GC
-XX:+PerfDisableSharedMem
-XX:+ParallelRefProcEnabled
-XX:MaxGCPauseMillis=250
-XX:+AlwaysPreTouch
-XX:+ExplicitGCInvokesConcurrent
-verbose:gc
-XX:+PrintHeapAtGC
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintGCTimeStamps
-XX:+PrintTenuringDistribution
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintGCApplicationConcurrentTime
Code: Select all
Removed 15 875 439 unreachable objects using 1 700 938 414 bytes
Was könnte das sein?
Mobile version