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];
}

Ответы на вопрос(2)

Ваш ответ на вопрос