我正在Java8(32位)中运行程序,并使用-Xmx1024m
将一个相当大的文件(120MB)加载到字节数组中使用FileInputStream
。
问题是,在Java6中我没有任何问题,但在Java8中,当我尝试加载它时,我会立即收到OutOfMemoryError
异常。
我仍然有很多可用内存,并且我已经对其进行了分析,没有发现问题。
如果我尝试从SSCCE中提取出这个问题,则可以正常工作。
我知道Oracle已经摆脱了PermGen,但这可能会影响我的程序吗?
我也读到说这可能与堆空间的碎片化问题有关,但我尝试过调试、分析,并在分配内存之前从分析器中运行GC周期,仍然发生这种情况(我认为GC周期会整理堆空间)。