Và nói chung, là các đơn vị được sử dụng cho các tùy chọn -Xmx
, -Xms
và -Xmn
("k", "M" và "G" hoặc ít khả năng tiêu chuẩn "K", "m" hoặc "g") Binary prefix bội số (tức là quyền hạn của 1024), hoặc là họ quyền hạn của 1000?Có phải java -Xmx1G có nghĩa là 10^9 hoặc 2^30 byte không?
Sách hướng dẫn cho biết chúng đại diện cho kilobyte (kB), megabyte (MB) và gigabyte (GB), cho thấy chúng có công suất 1000 như được xác định trong hệ thống SI gốc. Các bài kiểm tra không chính thức của tôi (rằng tôi không tự tin lắm) đề nghị họ thực sự là kibibytes (kiB), mebibytes (MiB) và gibibytes (GiB), tất cả quyền hạn của 1024.
Vậy điều gì là đúng? Ví dụ. mã Java nào sẽ hiển thị kích thước hiện tại?
Sử dụng bội số của 1024 không có gì đáng ngạc nhiên đối với kích thước bộ nhớ RAM, vì RAM thường được đặt vật lý bằng cách tăng gấp đôi các mô-đun phần cứng. Nhưng việc sử dụng các đơn vị một cách rõ ràng và tiêu chuẩn là quan trọng hơn bao giờ hết khi chúng ta nhận được các quyền hạn lớn hơn và lớn hơn, vì tiềm năng cho sự nhầm lẫn phát triển. Đơn vị "t" cũng được JVM của tôi chấp nhận và 1 TiB lớn hơn 10 TB so với 1 TB. Lưu ý: nếu đây thực sự là bội số nhị phân, tôi đề nghị cập nhật tài liệu và giao diện người dùng rất rõ ràng về điều đó, với các ví dụ như "Nối chữ k hoặc K để chỉ kibibyte (1024 bytes), hoặc m hoặc M để biểu thị các mebibyte (1048576 byte) ". Đó là cách tiếp cận được thực hiện, ví dụ: trong Ubuntu: UnitsPolicy - Ubuntu Wiki.
Lưu ý: để biết thêm về các tùy chọn được sử dụng cho, xem ví dụ: java - What are the Xms and Xmx parameters when starting JVMs?.
@ElliottFrisch Chủ yếu tôi đang đặt câu hỏi, tìm câu trả lời dứt khoát. Đề xuất tài liệu chỉ nhằm mục đích thêm rõ ràng hơn về những gì tôi đang bối rối. – nealmcb