一个简单的“Hello World”在64位机器上需要10G虚拟内存,而在32位机器上需要1G虚拟内存?
在我们的生产机器上运行一个简单的Java程序,我注意到这个程序消耗了更多的10G virt。我知道虚拟内存并不那么重要,但至少我想了解为什么需要这样做。
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位Linux机器上,相同的程序仅消耗约1G virt。旧机器有4GB RAM,新机器有32GB。