Câu hỏi của tôi là như tiêu đề, và tôi đã nhận một số kiến thức bằng cách tìm kiếm:Tại sao JVM tiêu thụ ít bộ nhớ hơn -Xms được chỉ định?
linux đã chia sẻ bộ nhớ How to measure actual memory usage of an application or process?
JVM sẽ bảo lưu lượng bộ nhớ setted trong XMS What does the -Xms JVM mean in reference to heap memory?
Nhưng vẫn không biết tại sao, một số trên có thể cung cấp một số trợ giúp?
Đây là lần chạy thử nghiệm của tôi trên Ubuntu12.04 (64bit) | JDK 1.7.0_04. và đầu cho thấy dưới đây:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4067 brian 20 0 5316m **262m** 7496 S 0 3.3 0:00.30 java -**Xms4096m** -Xmx4096m Test
4066 brian 20 0 3182m **256m** 7496 S 0 3.3 0:00.30 java -**Xms2048m** -Xmx2048m Test
4065 brian 20 0 2114m **252m** 7492 S 0 3.2 0:00.30 java -**Xms1024m** -Xmx1024m Test
4064 brian 20 0 1314m **76m** 7584 S 0 1.0 0:00.20 java -**Xms256m** -Xmx256m Test
4063 brian 20 0 1180m **51m** 7608 S 0 0.7 0:00.21 java -**Xms128m** -Xmx128m Test
sắp hỏi "tại sao trao đổi được sử dụng ngay cả khi bộ nhớ của tôi dồi dào". và nhận được câu trả lời từ url bạn đã đính kèm ... cảm ơn bạn! –
Vậy khi nào bộ nhớ RES sẽ tăng xms? Tôi có một tiến bộ mà xms và xmx = 6g, và sau khi nó bootstrap, RES là 4g, sau một ngày, nó là 5,9g, nhưng khi tôi đổ đống, nó chỉ là 3,9g. Vì vậy, sẽ jvm tiếp tục tiêu thụ bộ nhớ cho đến khi xms khi nó cần ngay cả khi các đối tượng được sử dụng trong bộ nhớ không cần nhiều? – Jaskey