尽管有足够的可用内存,但巨大的数组仍将导致内存不足

尽管有足够的可用内存,但巨大的数组仍将导致内存不足,第1张

尽管有足够的可用内存,但巨大的数组仍将导致内存不足

在Java中,堆中通常有多个区域(和子区域)。您拥有一个年轻且历久弥新的地区,拥有最多的收藏家。大阵列会立即添加到租用区域,但是根据您的最大内存大小,将为年轻空间保留一些空间。如果您缓慢分配内存,这些区域将调整大小,但是像您看到的那样,像这样的大块可能会失败

给定的内存通常相对便宜(并非总是如此),我只是将最大值增加到了您想要的应用程序使用过多的位置而使其失败的地步。

顺便说一句:如果您有一个如此大的结构,您可以考虑使用直接内存。

IntBuffer array = ByteBuffer.allocateDirect(200*1000*1000*4)      .order(ByteOrder.nativeOrder()).asIntBuffer();int a = array.get(n);array.put(n, a+1);

编写它有点乏味,但是有一个很大的优势,它几乎不使用堆。(头部少于1 KB)



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5040187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存