任何人都可以解释为什么当我从 Eclipse (Juno) 运行这段代码时会抛出 OOME,但是当我从命令行运行它时可以正常工作?我在这两种情况下都使用 -Xmx256M。
static class Task implements Runnable {
byte[] buf = new byte[150000000];
@Override
public void run() {
}
}
public static void main(String[] args) throws Exception {
System.out.println(Runtime.getRuntime().maxMemory());
ExecutorService ex = Executors.newSingleThreadExecutor();
ex.submit(new Task()).get();
ex.submit(new Task()).get();
}
这是 Eclipse 输出
259522560
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at Test2$Task.<init>(Test2.java:7)
at Test2.main(Test2.java:17)
我在笔记本上运行它,不确定它在其他 PC 上的表现如何。