Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Cách thay đổi/tăng kích thước heap của JVM trong Java

Chương trình Java chạy trong Java Virtual Machine (JVM) dùng heap memory để quản lý dữ liệu. Nếu chương trình cần nhiều bộ nhớ hơn, JVM có thể ném OutOfMemoryError khi cố gắng tạo đối tượng mới.

Thay đổi/tăng JVM Heap Size

Trong Java, có thể tăng heap size do JVM cấp phát bằng các tùy chọn dòng lệnh:

  • -Xms – Đặt kích thước heap ban đầu (initial heap size)
  • -Xmx – Đặt kích thước heap tối đa (maximum heap size)
  • -Xss – Đặt kích thước stack luồng Java (thread stack size)

Ví dụ kiểm tra heap size hiện tại

public class HeapSizeTest { 
    public static void main(String[] args){ 
        // Lấy kích thước heap JVM 
        long heapSize = Runtime.getRuntime().totalMemory(); 
        // In heap size 
        System.out.println("Heap Size: " + heapSize); 
    } 
}

Kết quả đầu ra

Heap Size: 16252928

Cách sử dụng thực tế

# Khởi động với heap ban đầu 512MB, tối đa 2GB, stack 1MB 
java -Xms512m -Xmx2g -Xss1m MyApplication

Đơn vị: k/K (kilobyte), m/M (megabyte), g/G (gigabyte).

Lưu ý quan trọng

  • -Xms và -Xmx nên đặt bằng nhau trong production để tránh chi phí mở rộng heap động.
  • Heap size không vượt quá RAM vật lý có sẵn (trừ swap).
  • JVM 64-bit cần thiết cho heap > ~1.5-2GB (tùy OS).
  • Runtime.getRuntime().maxMemory() trả về -Xmx, totalMemory() trả về heap hiện tại (có thể < -Xmx nếu chưa mở rộng).
  • Giám sát heap: jconsole, jvisualvm, -Xlog:gc*, -XX:+PrintGCDetails.