2016-02-11 55 views
4

我知道,一旦Java堆大小增长到32GB以上,我们将失去压缩指针的好处,并且可能会有更少的有效内存(与32GB相比),直到总堆达到〜48GB。直接内存会影响Java中的压缩指针吗?

直接内存使用是否会影响使用压缩指针的决心?例如,我仍然可以使用它们的设置,如-Xmx28G -XX:MaxDirectMemorySize=12G

+3

@AndrewWilliamson我必须尊敬但强烈反对。 –

+0

是的,这是用户的选择,通常考虑的因素不仅仅是内存使用量。我明白,无论语言如何,有些东西都很大,但程序越大,您越注意到切换到C++的好处。我只是把它作为一个建议。 –

+1

@AndrewWilliamson那......非常......自以为是。虽然有可以证明你的观点会被发现的场景,但也有可以证明的观点并非如此。在不了解用例的情况下,这个陈述只是猜测,更好地保留在私人的思想中,而不是作为评论。 – Durandal

回答

3

我知道,一旦Java堆大小增长到32GB以上,我们就会失去压缩指针的好处,并且可能会有更少的有效内存(相比32GB),直到总堆达到〜48GB。

您可以将对象对齐增加到16(使用Java),使您可以使用高达64 GB的CompressedOops。

直接内存使用是否会影响使用压缩指针的决心?

直接存储器就像线程堆栈,GUI组件,共享库等,他们不是堆的一部分,只是本机内存,也不是元空间。

例如,是否仍然可以使用他们喜欢-Xmx28G -XX设置:MaxDirectMemorySize = 12G

你可以有-XX:MaxDirectMemorySize=1024G,如果你喜欢,这不是堆的一部分。