Kann die JConsole von Java zur automatischen Speicherkonfiguration verwendet werden?

8

Ich lerne über Java JMX und JConsole . Ich bin neugierig auf die Speicherverwaltung von JConsole. Zum Beispiel gibt es eine Schaltfläche "GC ausführen" auf der Registerkarte "Speicher":

Angenommen, ich habe eine einfache Java-App, die Speicherplatz verbraucht, etwa so:

%Vor%

Wäre es möglich, JConsole zu konfigurieren, um zu verhindern, dass diese App X Speichermenge verbraucht? Oder muss ich über JMX eine neue MBean erstellen? Danke

    
Coffee 01.03.2016, 01:37
quelle

3 Antworten

3
  

Wäre es möglich, JConsole so zu konfigurieren, dass diese App nicht funktioniert?   X Speichermenge verbrauchen?

Von JConsole können wir die Speichergrenzen nicht einstellen / kontrollieren. Die einzige Option, die ich sehe, ist die Verwendung von -Xmx beim Start des Java-Prozesses. Mit dem folgenden Screenshot macht JConsole Speicherparameter nur lesbar, aber nicht schreibbar.

  

Oder muss ich eine neue MBean über JMX machen?

Selbst wenn wir unsere eigene MBean schreiben, glaube ich nicht, dass es möglich ist, die Speichergrenzen des Java-Prozesses zur Laufzeit zu ändern. Die einzige Möglichkeit besteht darin, die Speichergrenzen beim Start mit -Xms und -Xmx zu konfigurieren.

Wenn die Frage nicht speziell für Ihren Beispielcode gilt, in dem Sie die Anzahl der Elemente begrenzen möchten, die zu Vector bis JMX Bean hinzugefügt werden können, und dort den Speicherverbrauch einschränken, was möglich ist, aber ich bezweifle, ob das das ist, wonach du suchst.

    
quelle
0

Nein, das kannst du nicht. Java-Speicher-Management ist eine Verantwortung von Garbage Collector und tatsächlichen Software-Entwicklern. Sie können die Speicherzuweisung mit verschiedenen Referenztypen (z. B. Soft-Referenzen) optimieren, GC-Parameter und -Algorithmus optimieren oder versuchen, den GC-Aufruf mit JMX oder jcmd GC.run Dienstprogrammbefehl. Sie können jedoch Speichergrenzen für die Ausführung von JVM nicht ändern oder die Obergrenze für eine Heap-Belegung festlegen.

Wenn Sie eine andere Strategie für die Speicherverwaltung in Java benötigen, schauen Sie sich Produkte wie Terracotta BigMemory an.

    
nukie 22.03.2016 20:03
quelle
0

Sie können nur MBean-Funktionen hinzufügen und von JConsole aufrufen - unter Operationen.

%Vor%

siehe hier Ссылка

    
LiozM 22.03.2016 20:46
quelle

Tags und Links