在我的单元测试中,我故意尝试引发OutOfMemoryError异常.我使用如下的简单语句:
byte[] block = new byte[128 * 1024 * 1024 * 1024];
该代码适用于Win7 64位,带有jdk6u21 64位.但是当我使用jdk6u21在Centos 5 64bit上运行时,没有抛出OutOfMemoryError,即使我使数组的大小更大.
任何的想法?
Linux并不总是会立即为您分配所需的所有内存,因为许多真正的应用程序需要的内容超出了他们的需求.这被称为overcommit(这也意味着它有时会猜错,而可怕的OOM杀手罢工).
对于你的unittest,我只会手动抛出OutOfMemoryError.