2015-05-05 9 views
6

Ich verwende GC Optionen XX:+UseParNewGC-XX:+UseConcMarkSweepGC für meine Anwendung.Wie man JVM freigeben Speicher zurück zu OS

Da die meisten von Ihnen bereits erfahren, ist JVM gut darin, den Heapspeicher auf die maximale Größe des Heapspeichers zu erhöhen, es gibt jedoch keinen Speicher an das Betriebssystem zurück. Ich bin auf -XX:MaxHeapFreeRatio und -XX:MinHeapFreeRatio gestoßen, aber diese werden für parallele Müllsammler ignoriert.

Gibt es spezielle Optionen, um den JVM-Freigabespeicher für die Kombination -XX:MaxHeapFreeRatio and -XX:MinHeapFreeRatio wieder auf OS zu setzen.

+0

Nun .. Auch wenn Sie Optionen für diese Dinge finden, sind sie nicht garantiert, um über Architekturen zu arbeiten. – TheLostMind

+0

@TheLostMind - Sind '-XX: MaxHeapFreeRatio' und' -XX: MinHeapFreeRatio' garantiert auf Oracle 64-Bit Linux JVM Ich bin mir nicht sicher, ob über Parameter '-XX: MaxHeapFreeRatio' und' -XX: MinHeapFreeRatio' sind nur für Serienmüllsammler oder nicht. Ich finde dafür widersprüchliche Zitate. – Pushkar

+0

XX: + UseParNewGC mit den maximalen und minimalen Heap-freien Ratios gibt den Speicher für mein Windows 64bit-Setup mindestens in Java ab 1.8.0_73 zurück. Wenn Sie es jedoch nicht explizit an GC senden, wird es sich möglicherweise nur entscheiden, wenn das Betriebssystem unter Druck steht. Schließlich weiß ich nicht, ob die Option UseConcMarkSweepGC dies ändert. – nsandersen

Antwort

5

Auf meinem Java 1.8.0_45 -XX: + UseG1GC macht Speicher schrumpfen. Dies ist mein Test:

MemoryPoolMXBean m = ManagementFactory.getMemoryPoolMXBeans().get(5); 
    System.out.println(m.getName()); 
    byte[] a = new byte[512 * 1024 * 1024]; 
    System.out.println(m.getUsage().getCommitted()/1024/1024); 
    a = null; 
    System.gc(); 
    Thread.sleep(1000); 
    System.out.println(m.getUsage().getCommitted()/1024/1024); 
+0

Muss ich andere Parameter als den Garbage Collector auf G1GC umstellen? – Pushkar

+1

Wenn G1GC Shrinking aktiviert, dann sollten -XX: MaxHeapFreeRatio und -XX: MinHeapFreeRatio ebenfalls funktionieren –

Verwandte Themen