Tôi thấy rằng với -Xmx2g, bộ nhớ cao điểm đạt đến 1G và có các bộ sưu tập chính (bộ thu marksweep). Với -Xmx3g, nó đạt 1,5G và thực hiện một bộ sưu tập lớn. Với -Xmg4g, nó đạt đến 2G và thực hiện các bộ sưu tập lớn. Nhưng, từ đây tôi đã cố gắng tăng bộ nhớ tối đa lên 6G, 8G, 12G và tất cả các lần bộ nhớ cao điểm đạt đến 2G thực hiện các bộ sưu tập chính.Sử dụng bộ nhớ tối đa không vượt quá giới hạn
Làm cách nào để sử dụng vượt quá 2G? Tôi đã không đi qua bất kỳ thiết lập cho điều này. Liệu -Xms có quan trọng ở đây không? Đối với những người -Xmx, tôi đã thực hiện -Xms một nửa -Xmx.
Tôi đang sử dụng Jetty, Java 1.6.024.
CẬP NHẬT: Có, tôi đang sử dụng JVM 64 bit. Các tùy chọn JVM tôi đang sử dụng là: -Xmx6g -Xms3g -XX: MaxPermSize = 256m Cách tôi xác định bộ nhớ đỉnh bằng cách xem biểu đồ bộ nhớ trong JConsole. Nó đạt đến 2G và giọt (bộ sưu tập lớn). Old Gen đạt 1,5G max và sau đó thả xảy ra.
Cảm ơn, Prams.
Giả sử bạn đang sử dụng JVM 64 bit có phải là giả thiết không? Nó đáng để hỏi, vì JVM 32 bit có giới hạn kích thước 2GB được xây dựng. – duffymo
Tôi nghĩ rằng nó an toàn để nói đó là một JVM 64 bit, vì Java sẽ chấm dứt mà không chạy chương trình nếu bạn chỉ định kích thước heap lớn hơn nhiều hơn 1500m (giới hạn chính xác là phụ thuộc vào JVM). – rob
Bạn đã thử chơi với các thuộc tính -XX chưa? –