2012-03-09 47 views
8

Giả sử một JVM 64 bit, có bất kỳ lợi ích đáng kể nào để giữ MaxPermSize nhỏ không?Có bất kỳ lợi ích nào để giữ MaxPermSize nhỏ không?

Điều này nằm trong ngữ cảnh của một ứng dụng Java EE thường được triển khai lại và có một trình nạp lớp bị rò rỉ. Như một giải pháp trung hạn, có vẻ như rất hợp lý để chỉ tăng MaxPermSize lên một giá trị vô lý - miễn là nó sẽ không thổi ra không gian trao đổi đĩa.

Vì mã của ứng dụng không được sử dụng gần như tất cả đều không được sử dụng (ngoài việc liên quan đến rò rỉ), nó được hệ điều hành phân trang. Vì vậy, tải trọng trên bộ nhớ vật lý từ các mảnh vụn không được triển khai có vẻ không đáng kể; điều này đã được xác minh bằng cách quan sát RSS (kích thước bộ làm việc trên Unix).

Có những hiệu ứng nào khác mà tôi nên quan tâm không?

Trả lời

6

Từ JVM HotSpot FAQ

Tôi có nên tăng kích thước của các thế hệ vĩnh viễn trong vm khách hàng?

Đây sẽ luôn là cuộc gọi phán xét. Nói chung tăng kích thước của một thế hệ (và điều này không chỉ áp dụng cho thế hệ vĩnh viễn) có thể làm giảm tỷ lệ của nhiều vấn đề khác nhau, điều này có thể gây ra các quá trình khác quá mức và/hoặc thu gom rác thải hoặc ném ra ngoài bộ nhớ ngoại lệ.

Có hai chế độ lỗi để xem xét.

Khi tăng MaxPermSize, có thể các chương trình được xử lý tốt trước đó được sử dụng để thu thập rác để khôi phục không gian thế hệ vĩnh viễn sẽ chết do phân trang vô tận. Đối với thế hệ vĩnh viễn, điều này thường chỉ xảy ra với việc thực hiện quá nhiều chuỗi tạm thời.

Chế độ lỗi khác là không gian địa chỉ phải được dành riêng cho thế hệ vĩnh viễn và điều này sẽ làm giảm khả dụng cho phần còn lại của heap (tối đa -Xmx sau đó có thể quá lớn). Điều này sẽ gây ra các chương trình được cấu hình để sử dụng tất cả không gian có sẵn để thất bại khi khởi tạo.

Cũng this article nói:

Vì vậy, chúng tôi tận dụng thực tế là các lớp học được lưu giữ trong các thế hệ vĩnh viễn bằng cách thu thập các thế hệ vĩnh viễn trước khi thu thập các thế hệ tenured. Và thế hệ vĩnh viễn hiện đang được thu thập một cách serially.

Thế hệ vĩnh viễn lớn có thể gây ra thời gian lâu hơn cho GC.

+0

Vâng, GC là đáng lo ngại - tôi sợ tất cả các loại gỗ chết phải được phân trang cho nó. Cảm ơn! –

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