2017-02-07 1 views
0

In Anbetracht einer Java-Anwendung unter Linux, möchte ich die Menge von mmapped Speicher von Java Anwendung und Menge von Mmapped Speicher von JVM selbst zu messen.Unterscheiden zwischen Java-Anwendung mmaped Speicher und JVM mmmapped Speicher unter Linux

Frage 1: Ich kann/proc/{pid}/map, um mmap Anrufe von einer Anwendung zu verfolgen. Gibt es eine Möglichkeit, wie diese Ausgabe mir helfen kann, diese differentielle Speicherbelegung zu messen? Wenn nicht, gibt es ein anderes Tool, das mir helfen kann?

Frage 2: Wenn Java Anwendung(nicht JVM) öffnet eine große Datei, es mmapped auch erhalten? Wenn ja, kann ich die Größe dieses mmapped-Bereichs innerhalb der Java-Prozesslandkarte differenzieren und messen?

Antwort

0

Gibt es eine Möglichkeit, wie diese Ausgabe mir helfen kann, diese differentielle Speicherkarte zu messen?

Ja, Sie müssen die Datei lesen und sehen, was sie enthält. Für weitere Informationen können Sie /proc/{pid}/smaps

Wenn Java-Anwendung (nicht JVM)

Es gibt keine Möglichkeit, den Unterschied zu erkennen verwenden.

öffnet eine große Datei, wird es auch gemappt?

Eine Datei wird nur im Speicher zugeordnet, wenn Sie den Befehl mmap für FileChannel verwenden.

Kann ich die Größe dieses mmapped-Bereichs innerhalb der Java-Prozesslandkarte differenzieren und messen?

Sie können die Datei jeder Region zuordnen, siehe erste Frage.

1

Die BufferPoolMXBean, auf die auch zugegriffen werden kann via visualvm meldet die Zuordnungen, die Byebuffer unterstützen. Andere JVM-interne Mappings können über NMT

verfolgt werden
Verwandte Themen