64位JVM可能的最大堆大小是多少?

-Xmx当然,在32位系统中可以设置的理论最大堆值是2^32字节,但是通常(请参阅:了解最大JVM堆大小 -32 位vs64位),一个人不能使用全部4GB。

对于在64位计算机上的64位OS中运行的64位JVM,除了理论上的2^64字节数限制或16艾字节之外,是否还有其他限制?

我知道由于种种原因(主要是垃圾回收),过大的堆可能不是 明智的选择 ,但是鉴于阅读了有关具有terrabytes RAM的服务器的信息,我想知道有什么

可能

回答:

如果要使用32位引用,则堆限制为32 GB。

但是,如果您愿意使用64位引用,则大小可能会受到操作系统的限制,就像32位JVM一样。例如,在Windows 32位上,这是1.2到1.5 GB。

注意:您将希望您的JVM堆适合主内存,最好在一个NUMA区域内。在较大的计算机上大约为1

TB。如果您的JVM跨越NUMA个区域,则内存访问(尤其是GC)将花费更长的时间。如果您的JVM堆开始交换,则可能要花费数小时才能到达GC,甚至会破坏交换驱动器,甚至使您的计算机不可用。

注意:即使在堆中使用32位引用,也可以访问大型直接内存和内存映射大小。即使用远高于32 GB的内存。

热点JVM中的压缩oop

压缩的oop将托管指针(在JVM中的很多但不是所有位置)表示为32位值,必须将其缩放8倍,并添加到64位基址中才能找到它们所引用的对象。这使应用程序可以处理多达40亿个对象(而不是字节),或堆大小约为32Gb。同时,数据结构的紧凑性与ILP32模式具有竞争优势。

以上是 64位JVM可能的最大堆大小是多少? 的全部内容, 来源链接: utcz.com/qa/412032.html

回到顶部