Câu trả lời:
Cờ Xmx
chỉ định nhóm cấp phát bộ nhớ tối đa cho máy ảo Java (JVM), trong khi Xms
chỉ định nhóm cấp phát bộ nhớ ban đầu.
Điều này có nghĩa là JVM của bạn sẽ được bắt đầu với dung Xms
lượng bộ nhớ và sẽ có thể sử dụng tối đa dung Xmx
lượng bộ nhớ. Ví dụ, bắt đầu một JVM như bên dưới sẽ khởi động nó với 256 MB bộ nhớ và sẽ cho phép quá trình sử dụng tới 2048 MB bộ nhớ:
java -Xms256m -Xmx2048m
Cờ nhớ cũng có thể được chỉ định ở các kích cỡ khác nhau, chẳng hạn như kilobyte, megabyte, v.v.
-Xmx1024k
-Xmx512m
-Xmx8g
Các Xms
cờ không có giá trị mặc định, và Xmx
thường có một giá trị mặc định là 256 MB. Một cách sử dụng phổ biến cho những lá cờ này là khi bạn gặp phải a java.lang.OutOfMemoryError
.
Khi sử dụng các cài đặt này, hãy nhớ rằng các cài đặt này dành cho heap của JVM và JVM có thể / sẽ sử dụng nhiều bộ nhớ hơn chỉ là kích thước được phân bổ cho vùng heap. Từ tài liệu của Oracle :
Lưu ý rằng JVM sử dụng nhiều bộ nhớ hơn chỉ là heap. Ví dụ, các phương thức Java, các ngăn xếp luồng và các thẻ điều khiển riêng được phân bổ trong bộ nhớ tách biệt với heap, cũng như các cấu trúc dữ liệu bên trong JVM.
OutOfMemoryError
sẽ xảy ra.
-Xms256m
là "256 MiB", không phải "256 MB", vì nó đi bằng sức mạnh nhị phân thay vì sức mạnh của mười. Xem en.wikipedia.org/wiki/Binary_prefix . Ngoài ra, do một số không gian không thể sử dụng được dành riêng cho một nhóm không gian Survivor bổ sung, lượng bộ nhớ thực sự có sẵn Runtime.getRuntime().maxMemory()
ít hơn giá trị được chỉ định qua -Xmx
Chạy lệnh java -X
và bạn sẽ nhận được một danh sách tất cả các -X
tùy chọn:
C:\Users\Admin>java -X
-Xmixed mixed mode execution (default)
-Xint interpreted mode execution only
-Xbootclasspath:<directories and zip/jar files separated by ;>
set search path for bootstrap classes and resources
-Xbootclasspath/a:<directories and zip/jar files separated by ;>
append to end of bootstrap class path
-Xbootclasspath/p:<directories and zip/jar files separated by ;>
prepend in front of bootstrap class path
-Xdiag show additional diagnostic messages
-Xnoclassgc disable class garbage collection
-Xincgc enable incremental garbage collection
-Xloggc:<file> log GC status to a file with time stamps
-Xbatch disable background compilation
-Xms<size> set initial Java heap size.........................
-Xmx<size> set maximum Java heap size.........................
-Xss<size> set java thread stack size
-Xprof output cpu profiling data
-Xfuture enable strictest checks, anticipating future default
-Xrs reduce use of OS signals by Java/VM (see documentation)
-Xcheck:jni perform additional checks for JNI functions
-Xshare:off do not attempt to use shared class data
-Xshare:auto use shared class data if possible (default)
-Xshare:on require using shared class data, otherwise fail.
-XshowSettings show all settings and continue
-XshowSettings:all show all settings and continue
-XshowSettings:vm show all vm related settings and continue
-XshowSettings:properties show all property settings and continue
-XshowSettings:locale show all locale related settings and continue
Các tùy chọn -X không chuẩn và có thể thay đổi mà không cần thông báo trước.
Tôi hy vọng điều này sẽ giúp bạn hiểu Xms
, Xmx
cũng như nhiều thứ khác quan trọng nhất. :)
Bạn có thể chỉ định nó trong IDE của bạn. Ví dụ, đối với Eclipse trong Chạy cấu hình → đối số VM . Bạn có thể nhập -Xmx800m -Xms500m
như
Các câu hỏi đã được giải quyết ở trên. Chỉ cần thêm một phần của các giá trị mặc định.
Theo http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html
Giá trị mặc định của Xmx sẽ phụ thuộc vào nền tảng và dung lượng bộ nhớ có sẵn trong hệ thống.
-Xms kích thước heap ban đầu cho khởi động, tuy nhiên, trong quá trình làm việc, kích thước heap có thể nhỏ hơn -Xms do không hoạt động hoặc lặp lại của người dùng. Đây không phải là một kích thước heap yêu cầu tối thiểu.
-Xmx kích thước heap tối đa
-Xmx128m -Xms64m
nó có thể đạt cực đại xung quanh275m
RES mem, nhưng khi sử dụng,-Xmx128m -Xms128m
nó có thể đạt cực đại xung quanh550m
RES mem Sử dụng Java 8 Điều tốt nhất là nhấn mạnh vào GC và xem xét điều gì xảy ra ...