2015-05-05 14 views
6

Tôi đang sử dụng các tùy chọn GC XX:+UseParNewGC-XX:+UseConcMarkSweepGC cho ứng dụng của mình.Cách đặt bộ nhớ phát hành JVM trở lại OS

Vì hầu hết các bạn đã trải qua JVM là tốt khi tăng heap lên đến kích thước heap tối đa, tuy nhiên nó không giải phóng bộ nhớ trở lại hệ điều hành. Tôi đã xem qua số -XX:MaxHeapFreeRatio-XX:MinHeapFreeRatio nhưng chúng bị bỏ qua cho Bộ thu gom rác song song.

Có các tùy chọn đặc biệt để buộc bộ nhớ phát hành JVM quay trở lại OS cho kết hợp -XX:MaxHeapFreeRatio and -XX:MinHeapFreeRatio.

+0

Vâng .. Ngay cả khi bạn tìm thấy các tùy chọn cho những điều này, chúng không được đảm bảo để làm việc trên các kiến ​​trúc. – TheLostMind

+0

@TheLostMind - Là '-XX: MaxHeapFreeRatio' và' -XX: MinHeapFreeRatio' được bảo đảm hoạt động trên JVM 64 bit của JVM Tôi không chắc chắn nếu các tham số trên '-XX: MaxHeapFreeRatio' và' -XX: MinHeapFreeRatio' chỉ dành cho người thu gom rác nối tiếp hay không. Tôi đang tìm những trích dẫn mâu thuẫn với điều đó. – Pushkar

+0

XX: + UseParNewGC với tỷ lệ tự do tối đa và tối thiểu không giải phóng bộ nhớ trở lại hệ điều hành trong java 1.8.0_73 trở đi cho thiết lập Windows 64 bit của tôi ít nhất. Tuy nhiên, nếu bạn không yêu cầu GC một cách rõ ràng, nó chỉ có thể quyết định làm như vậy nếu hệ điều hành dưới áp lực bộ nhớ. Cuối cùng, tôi không biết nếu tùy chọn UseConcMarkSweepGC thay đổi bất kỳ điều này. – nsandersen

Trả lời

5

Trên Java 1.8.0_45 -XX: + UseG1GC làm cho bộ nhớ co lại. Đây là thử nghiệm của tôi:

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

Tôi có cần phải tinh chỉnh bất kỳ thông số nào khác ngoài việc chuyển bộ thu gom rác sang G1GC không? – Pushkar

+1

Nếu G1GC cho phép co lại thì -XX: MaxHeapFreeRatio và -XX: MinHeapFreeRatio cũng hoạt động –

Các vấn đề liên quan