Lợi ích là có một hình phạt hiệu suất khi bạn sử dụng hết số lượng mà nó phải được thay đổi kích cỡ. Nếu bạn đặt nó ban đầu là 64MB nhưng hóa ra ứng dụng của bạn dưới tải cần 250MB, khi bạn nhấn gần 64MB, JVM sẽ phân bổ không gian heap hơn và có thể di chuyển xung quanh một số đối tượng và thực hiện việc lưu giữ sách khác. Điều này tất nhiên cần có thời gian.
Khi ứng dụng của bạn đang được tải, bạn muốn tất cả các tài nguyên dành riêng để chạy, vì vậy công việc phụ này có thể khiến ứng dụng phản hồi chậm hơn hoặc thậm chí trong một số trường hợp nó có thể bị lỗi nếu hết bộ nhớ trước heap được thay đổi kích cỡ.
Đôi khi khi sử dụng ứng dụng Java, bạn sẽ thấy các hướng dẫn như "đặt Xms
và Xmx
cho cùng một giá trị". Điều này được thực hiện để tránh việc thay đổi kích thước hoàn toàn, để ứng dụng của bạn khởi chạy với đống ứng dụng đã lớn như trước đây.
Từ kinh nghiệm của bạn, bạn có nên đặt Xms thành cùng giá trị như Xmx không? – SyBer
Nó phụ thuộc vào ứng dụng. Nếu bạn là một tổ chức tài chính với một máy chủ chuyên dụng cho một ứng dụng hoặc một bộ ứng dụng, nó có ý nghĩa. Đặc biệt là kể từ khi một ứng dụng giao dịch với các lệnh thị trường có khả năng có thể xử lý 100 hoặc 1000 của tin nhắn/giây, với độ trễ trung bình là 2-25ms. Việc thay đổi kích thước có thể làm cho độ trễ đó thấp hơn 5000%, cho tất cả các đơn đặt hàng được gửi vào thời điểm đó. Bạn thậm chí có thể thả đơn đặt hàng. Như mọi khi, hồ sơ trước khi bạn cố gắng tối ưu hóa. – Phil
Cần lưu ý rằng đối với các hệ thống có số lượng lớn JVMs hoạt động -Xms sẽ tăng dấu chân JVM trung bình, trong khi cho phép JVM tự quản lý sự lây lan heap của nó cho phép người dùng sử dụng các lược đồ thu thập bộ nhớ. – Xailor