在我的应用程序启动时,我正在创建具有75 * 10 ^ 6容量的特洛伊长哈希集。
Profiler显示,该应用程序使用1.4g。我试着设置-Xmx1600m,并且内存不足。
-Xmx2000m相同。
-Xmx2030m相同。
-Xmx2040m OK。
Profiler看不到这么大的分配,它在哪里以及为什么会发生?
答案 0 :(得分:2)
很可能你的终身空间不够大。 jvm可能不够智能缩小其他区域以允许你这么大的连续块。注意CMS不会进行碎片整理,因此您可以使用更小的阵列来解决此问题。
对于可能考虑使用堆内存的大型集合。