Java OutOfMemoryError异常的奇怪行为

14 浏览
0 Comments

Java OutOfMemoryError异常的奇怪行为

假设我们的最大内存为256M,为什么这段代码可以运行成功:

public static void main(String... args) {
  for (int i = 0; i < 2; i++)
  {
      byte[] a1 = new byte[150000000];
  }
  byte[] a2 = new byte[150000000];
}

但是这段代码会抛出 OOME 异常?

public static void main(String... args) {
  //for (int i = 0; i < 2; i++)
  {
      byte[] a1 = new byte[150000000];
  }
  byte[] a2 = new byte[150000000];
}

0