Запустив простую Java-программу на нашей производственной машине, я заметил, что эта программа потребляет больше 10 ГБ. Я знаю, что виртуальная память не так важна, но, по крайней мере, я хотел бы понять, почему это необходимо.
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
try {
Thread.sleep(10000);
} catch(InterruptedException e) {
/* ignored */
}
}
}
Вот что говорит top
, когда я запускаю эту небольшую программу:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18764 myuser 20 0 10.2g 20m 8128 S 1.7 0.1 0:00.05 java
Кто-нибудь знает, почему это происходит?
uname -a говорит:
Linux m4fxhpsrm1dg 2.6.32-358.18.1.el6.x86_64 #1 SMP Fri Aug 2 17:04:38 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux
На более старой машине с 32-битной линией одна и та же программа потребляет всего около 1 Гб. Старая машина имеет 4 ГБ оперативной памяти, новая 32 ГБ.