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
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.
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.