我知道,一旦Java堆大小超过32GB,我们就会失去压缩指针的好处,并且可能会减少有效内存(相比之下32GB),直到总堆达到~48GB。
直接内存使用是否影响使用压缩指针的决定?例如,我是否仍然可以使用-Xmx28G -XX:MaxDirectMemorySize=12G
?
答案 0 :(得分:3)
我知道,一旦Java堆大小超过32GB,我们就会失去压缩指针的好处,并且可能会减少有效内存(相比之下32GB),直到总堆达到~48GB。
您可以将对象对齐增加到16(在Java中),允许您使用高达64 GB的CompressedOops。
直接内存使用是否会影响使用压缩指针的决定?
直接内存只是本机内存,如线程堆栈,GUI组件,共享库等。它们不是堆的一部分,也不是元空间。
例如,我是否仍然可以使用-Xmx28G -XX等设置:MaxDirectMemorySize = 12G
如果您愿意,可以拥有-XX:MaxDirectMemorySize=1024G
,这不是堆的一部分。