java – 加载100MB文件时的OutOfMemoryError,尽管有550MB堆

以下问题:

>我开始开发我的程序(-Xmx550M)
>我加载了一个90 MB的文件

此加载是下图中使用堆的峰值.在此之后,堆大小从130增加到500 MB,尽管只需要110 MB.

好吧,没问题,烦人,但还可以.但是如果我现在开始一个保存过程(需要大约100 MB),Java VM就会崩溃java.lang.OutOfMemoryError:Java堆空间异常.

如果我使用750 MB堆大小启动应用程序,它工作正常.你看到短峰,它工作正常:

现在我的问题:为什么我得到一个550 MB堆大小的OutOfMemoryError?该应用程序只需要400 MB(在最高峰)!

我不知道如何解决这个问题:(

请帮我!

最佳答案 如果加载100Mb文件,它还不意味着在内存中用于此文件的结构占用100M.例如,如果你有String,你的长度也有4字节的开销.

点赞