Câu trả lời của IMO Tom Hawtin là tốt nhất. Nó phát triển cho đến khi nó đạt đến mức tối đa, sau đó chạy GC. Trong môi trường máy chủ, điều này có ý nghĩa: Bạn muốn có hiệu suất tốt nhất, không sử dụng bộ nhớ tốt nhất. Bạn tính trước tổng số lượng bộ nhớ, sau đó cung cấp cho mỗi ứng dụng một tối đa và sau đó tất cả mọi thứ phù hợp và có hiệu suất tốt nhất. Hành vi này có thể được tinh chỉnh.
Sử dụng jconsole để xem mức độ thực sự được sử dụng. Làm GC và xem những gì nó đi xuống. Con số đó không nên phát triển theo thời gian hoặc bạn bị rò rỉ bộ nhớ. Sử dụng visualvm để gỡ lỗi rò rỉ bộ nhớ.
Mỗi khi bạn tải lại ứng dụng, nó sử dụng bộ nhớ Perm Gen bổ sung không thể khôi phục (trong Sun JVM, những người khác như JRockit không có vấn đề này). Trong sản xuất, bạn không nên tải lại ứng dụng. Khởi động lại Tomcat mỗi lần.Nếu bạn thực sự muốn tiếp tục làm điều đó thì bạn có thể tăng bộ nhớ tối đa và cũng tăng bộ nhớ Max Perm Gen với cờ -XX: MaxPermSize = 256m
Nguồn
2009-02-19 16:05:46
Điều này là bình thường đối với JVM của máy chủ. –
@sjbotha: Tăng trưởng liên tục chắc chắn là/không/bình thường. – GEOCHET
Tôi nghĩ rằng nó phụ thuộc nếu nó liên tục tăng trưởng mà không có bất kỳ giới hạn hoặc không –