Mic*_*wan 26 java 64-bit jvm heap-memory jvm-arguments
可以-Xmx在32位系统中设置的理论最大堆值当然是2^32字节,但通常(请参阅:了解最大JVM堆大小 - 32位对64位),不能使用全部4GB.
对于在64位计算机上运行64位操作系统的64位JVM,除了理论上的2^64字节限制或16艾字节外,还有其他限制吗?
我知道由于各种原因(主要是垃圾收集),过大的堆可能不明智,但鉴于阅读有关TB的TB的服务器,我想知道什么是可能的.
Pet*_*rey 23
如果要使用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以上.
压缩的oops表示托管指针(在JVM中的许多但不是所有位置)作为32位值,必须按8倍缩放并添加到64位基址以查找它们引用的对象.这允许应用程序处理多达40亿个对象(不是字节),或者堆大小最多约32Gb.同时,数据结构紧凑性与ILP32模式相比具有竞争力.
| 归档时间: |
|
| 查看次数: |
97060 次 |
| 最近记录: |