5 Stimmen

Java / Tomcat Speicherleck in RedHat Linux?

Ich habe eine Red Hat Box mit 6G Speicher, auf der Tomcat läuft, und ich versuche herauszufinden, wie viel Speicher ich noch auf der Box habe. Das Problem ist, dass top & jconsole eine Zahl anzeigt (ca. 200M), und der Systemmonitor eine andere Zahl (ca. 2G). Weiß jemand, was der Unterschied ist?

Ich bin mir nicht sicher, ob es hier ein Speicherleck gibt, aber der größte Speicherverbraucher ist ein Tomcat-Prozess, der 2,2 G Speicher benötigt.

Screenshots unten: alt text alt text alt text alt text alt text

Bildschirmfoto des freien Befehls hinzugefügt: alt text

4voto

Stephen C Punkte 665668

Top sagt Ihnen eindeutig, dass Tomcat nur 38 % des verfügbaren Speichers verwendet. Ihr Problem (falls es ein Problem gibt) liegt bei dem, was die verbleibenden 62 % des Speichers verwendet.

Ich vermute, dass es für die Zwischenspeicherung von Festplattenblöcken/Dateisystemen verwendet wird. (Führen Sie die free Befehl und ich erwarte, dass Sie einen hohen Wert für "cached" sehen sollten, der in etwa der Größe der fehlenden Seiten entspricht).

Wenn Ihr System eine große Anzahl von Seiten im Cache hat, ist es ein GUTES DING . All diese zwischengespeicherten Blöcke machen den Lesezugriff auf Ihr Dateisystem angenehm und schnell (und wenn das Betriebssystem physische Seiten für etwas Wichtigeres benötigt, z. B. für die Ausführung von Anwendungen, kann es diese schnell aus dem Disk-Cache abrufen).

0 Stimmen

Danke Stephen C, ich habe den Screenshot des freien Befehls hinzugefügt. Ich schätze, ich muss mir dann keine Sorgen machen, denn Caching ist eine gute Sache.

0 Stimmen

Gibt es eine Möglichkeit herauszufinden, welcher Prozess den Cache beansprucht?

0 Stimmen

@black-rocky - nein. Das Betriebssystem verknüpft die Daten im Disk-Block-Cache nicht mit einem Prozess. Aber das ist eigentlich egal, denn, wie ich schon sagte, werden die Seiten im Cache bei Bedarf wiederhergestellt.

1voto

Inv3r53 Punkte 2869

Der Systemmonitor zeigt an, wie viel Speicher der Tomcat-Prozess verbraucht, nämlich 2G [die maximale Heap-Größe, die Sie eingestellt haben, ist zugewiesen].

unter Linux vergleichen Sie es mit free -m die den aktuell freien Speicher anzeigt.

1voto

Neil Coffey Punkte 21238

Was wird bei "free -t" angezeigt? Ich frage mich, ob eine der Zahlen zwischengespeicherte Dateisystemdaten enthält (die in dem Sinne verwendet werden, dass sie physisch für etwas genutzt werden, aber frei sind, da sie jederzeit gelöscht werden können, wenn es nötig ist).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X