Đối số -Xmx
xác định kích thước bộ nhớ tối đa mà heap có thể tiếp cận cho JVM. Bạn phải biết chương trình của bạn tốt và xem nó hoạt động như thế nào dưới tải và thiết lập thông số này cho phù hợp. Giá trị thấp có thể gây ra OutOfMemoryExceptions hoặc hiệu suất rất kém nếu bộ nhớ heap của chương trình đạt đến kích thước heap tối đa. Nếu chương trình của bạn đang chạy trong máy chủ chuyên dụng, bạn có thể đặt tham số này cao hơn vì nó sẽ không ảnh hưởng đến các chương trình khác.
Đối số -Xms
đặt kích thước bộ nhớ heap ban đầu cho JVM. Điều này có nghĩa là khi bạn bắt đầu chương trình của bạn, JVM sẽ cấp phát lượng bộ nhớ này ngay lập tức. Điều này rất hữu ích nếu chương trình của bạn sẽ tiêu tốn một lượng lớn bộ nhớ heap ngay từ đầu. Điều này tránh JVM liên tục tăng heap và có thể đạt được một số hiệu suất ở đó. Nếu bạn không biết thông số này có giúp ích cho bạn hay không, thì không sử dụng thông số.
Tóm lại, đây là một sự thỏa hiệp mà bạn phải quyết định chỉ dựa trên hành vi bộ nhớ của chương trình của bạn.
Nguồn
2009-06-25 13:22:02
Câu hỏi của bạn có liên quan đến một số vấn đề thực tế hay đó chỉ là câu hỏi lý thuyết? Vì nếu bạn có nhiều RAM trong hệ thống 64 bit, bạn có thể xem xét thay đổi thuật toán của mình để tận dụng lợi thế của nó - ví dụ: đọc/ánh xạ toàn bộ input.txt lớn vào bộ nhớ và thực hiện các thao tác trên đó. – akarnokd
Câu trả lời cho các loại câu hỏi này luôn là "Đo điểm chuẩn và tìm hiểu". –
Tôi hỏi người bảo trì gói JVM và anh ấy nói: "Trên Linux, tôi không chắc chắn rằng -Xms làm được rất nhiều trừ khi bạn có một thiết lập lạ. Có lẽ nó phân bổ mà không có MAP_NORESERVE chỉ để đảm bảo RAM thực sự ở đó. nó. " –