Zeit für Java-Speicherbereinigung?

8

Ich habe eine sehr leistungsabhängige Anwendung in Java. (Ich weiß, dass ich eigentlich C oder etwas anderes benutzen sollte. Aber jetzt ist es Java.) Ich versuche zu vermeiden, Objekte zu erschaffen und wegzuwerfen. Jetzt muss ich wissen, wie viel Müll noch gesammelt wird.

Wie kann ich das herausfinden?

Wenn möglich, möchte ich eine Art Nummer in Millisekunden oder Nanosekunden haben, die keine Installation von mehr Software erfordert.

    
Bitterblue 17.04.2013, 15:02
quelle

4 Antworten

7

Oder Sie können JVM die GC-Aktivität drucken lassen. Diese Einstellungen habe ich:

%Vor%

Die GC-Aktivität wird in eine Datei logs / gc.log ..

gedruckt     
Ivan Senic 17.04.2013 15:10
quelle
7

Sie können Tools wie VisualVM verwenden, um die Anwendungsaktivität zu überwachen. Stellen Sie sicher, dass Sie geeignete GC-Algorithmen verwenden.

Oracle JVM bietet mehrere Arten von Garbage Collectors:

  • Der Durchsatzsammler
  • Der gleichzeitige Kollektor für niedrige Pausen
  • Der inkrementelle Kollektor (manchmal als Zug bezeichnet) mit niedriger Pause:

Lesen Sie mehr über diese Sammler hier .

    
kosa 17.04.2013 15:05
quelle
2

Sie können dafür VisualVm verwenden, es ist genau das, was Sie brauchen.
Wie Sie unten sehen können, haben Sie eine GC-Aktivität, die sehr nützlich ist:

Neben der GC Activity gibt es viele Details wie: Heap-Nutzung, CPU-Nutzung, Objektinstanzen usw.

    
Stephan 17.04.2013 15:05
quelle
1

Jprofiler , mit dem das Speicherprofil sowohl die Speicherauslastung als auch die dynamischen Zuordnungslecks und die CPU beurteilen kann Profiling, um Thread-Konflikte zu bewerten.

    
quelle