Wenn ich den Garbage Collector manuell über VisualVM starte, sammelt der reguläre GC keinen MüllJava

Java-Forum
Anonymous
 Wenn ich den Garbage Collector manuell über VisualVM starte, sammelt der reguläre GC keinen Müll

Post by Anonymous »

Eine seltsame Situation,
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
Und das Wichtigste: Wenn ich versuche, einen Dump in einen Profiler (MAT und andere) hochzuladen, erhalte ich eine Nachricht.

Code: Select all

Removed 15 875 439 unreachable objects using 1 700 938 414 bytes
Warum kann er diese Objekte nicht anzeigen, ich muss sie genau sehen
Was könnte das sein?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post