Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JVM如何使用超过4gb的内存_Java_Performance_Configuration - Fatal编程技术网

Java JVM如何使用超过4gb的内存

Java JVM如何使用超过4gb的内存,java,performance,configuration,Java,Performance,Configuration,我请求安装Linux服务器(最好是Ubuntu 64位服务器), 以及以下计算机上的Java(64位): 英特尔Core2Quad Q8200-2.33 GHz 8gb DDR2 ram 软RAID1镜像中的2x 320GB SATA HDD(镜像) 问题是如何配置系统和Java,因为我需要JVM使用超过4gb的内存 它不能分布在许多虚拟机上。数据量超过4GB 而且它必须在内存中,因为HDD速度慢,性能至关重要 这是一个配置和性能问题,如果有人有经验的话,我想听听大家的意见 非常感谢您在这方

我请求安装Linux服务器(最好是Ubuntu 64位服务器), 以及以下计算机上的Java(64位):

  • 英特尔Core2Quad Q8200-2.33 GHz
  • 8gb DDR2 ram
  • 软RAID1镜像中的2x 320GB SATA HDD(镜像)
问题是如何配置系统和Java,因为我需要JVM使用超过4gb的内存

它不能分布在许多虚拟机上。数据量超过4GB 而且它必须在内存中,因为HDD速度慢,性能至关重要

这是一个配置和性能问题,如果有人有经验的话,我想听听大家的意见


非常感谢您在这方面帮助我……

一个64位JVM应该对巨大的堆没有任何问题,当然比您可用的RAM大得多。启动JVM时只需增加堆大小,例如:

java -Xmx6g
您过去必须指定64位标志(使用
-d64
),但我认为不再需要这样做了


32位JVM可以管理3GB的堆。

如果安装64位Ubuntu,我相信

sudo apt-get install sun-java6-jdk
为您提供一个64位Java



编辑:64位Java可以通过适当的开关为您提供所需的内存。该限制适用于32位JVM,它不能超过2-4 Gb,具体取决于操作系统。

skaffman的回答提供了分配6GB内存所需的标志,该回答是正确的。如果“g”不起作用,您可能需要尝试6000m(查看下面的链接了解有关标志/平台的详细信息)

对于其他选项,您可以在此处找到有关Java HotSpot VM所有可用选项的有用信息

(提供了行为和性能选项。本页还提供了特定于平台的链接)

JVM(特别是64位)毫不犹豫地占用所有内存,4Gb也不是问题。只需安装64位Ubuntu,默认的jre包也将是64位的


还要特别注意数据是如何存储在内存中的。同样,64位JDK非常需要内存,因为指针等的开销更高。因此,如果在某些数据结构中将这些4Gb以小块的形式分发,8Gb是不够的。

次要的挑剔:您的意思是“java-Xmx6g”(或“java-Xmx6144m”)。将大小指定为Gb将导致“无效的最大堆大小”错误。您在一小时前感谢他的更正,但没有更正您的答案?羞愧。@Malfist:嗯,是的,我有。我将
Xmx6Gb
更改为
Xmx6g
。这一切都在历史中。别忘了你需要为非堆和操作系统留下一些内存。4 GB可能是您在此机器上可以安全执行的限制。顺便说一句,这些日子内存相当便宜,如果你真的需要的话,你可以考虑多买些。i、 性能真的很关键。是的,这个规范对于开发人员工作站来说非常保守,更不用说高性能服务器了。