[英]OutOfMemoryError when loading 100MB file, despite 550MB heap
以下问题:
此加载是下图中使用的堆的峰值。 在此之后,堆大小从 130 MB 增加到 500 MB,尽管只需要 110 MB。
好吧,没问题,烦人,但还好。 但是,如果我现在开始一个保存过程(需要约 100 MB),Java VM 会因 java.lang.OutOfMemoryError: Java heap space 异常而崩溃。
如果我以 750 MB 的堆大小启动应用程序,它工作正常。 你会看到短峰,它工作正常:
现在我的问题是:为什么我会得到 550 MB 堆大小的 OutOfMemoryError? 该应用程序仅需要 400 MB(在最高峰时)!
我不知道如何解决这个问题:(
请帮我!
如果加载 100Mb 的文件,并不意味着内存中用于该文件的结构占用 100M。 例如,如果您有 String,那么它的长度也有 4 个字节的开销。
数据被采样。 就在它失败之前它使用了 400 MB,然后一段时间后它尝试使用更多的内存,例如 600 MB 但这没有显示,因为到下一个样本被采集时,OOME 已经发生,现在你的使用率要低得多.
简而言之,您的程序可以比您在图表中看到的更快地使用内存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.