小编use*_*431的帖子

一个简单的"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 */
        }
  }
}
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样?

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
Run Code Online (Sandbox Code Playgroud)

在较旧的32bit-linux机器上,同一程序仅消耗大约1G的virt.旧机器有4GB RAM,新机器有32GB.

java 64-bit jvm memory-management virtual-memory

66
推荐指数
4
解决办法
9597
查看次数

标签 统计

64-bit ×1

java ×1

jvm ×1

memory-management ×1

virtual-memory ×1