创建大型集合时,奇怪的OutOfMemory

时间:2013-10-09 07:58:10

标签: java jvm trove4j

在我的应用程序启动时,我正在创建具有75 * 10 ^ 6容量的特洛伊长哈希集。

Profiler显示,该应用程序使用1.4g。我试着设置-Xmx1600m,并且内存不足。

-Xmx2000m相同。

-Xmx2030m相同。

-Xmx2040m OK。

Profiler看不到这么大的分配,它在哪里以及为什么会发生?

1 个答案:

答案 0 :(得分:2)

很可能你的终身空间不够大。 jvm可能不够智能缩小其他区域以允许你这么大的连续块。注意CMS不会进行碎片整理,因此您可以使用更小的阵列来解决此问题。

对于可能考虑使用堆内存的大型集合。