Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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 JDK 7是否使用非连续堆?_Java_Java 7_Jvm Hotspot_Jrockit - Fatal编程技术网

Java JDK 7是否使用非连续堆?

Java JDK 7是否使用非连续堆?,java,java-7,jvm-hotspot,jrockit,Java,Java 7,Jvm Hotspot,Jrockit,我知道JDK 7应该是hotspot和jrockit之间的合并,而不会有jrockit 1.7。(来源:)我有一个项目需要jrockit的非连续堆特性以及一些java 1.7特性,所以既然JDK 7是一个合并,它是否支持非连续堆,因为我找不到这样的官方文档 我假设您询问的是非连续堆,因为您正遭受内存碎片的困扰。很多时候,您的32位地址空间是零碎的,但您的64位地址空间不是零碎的。也就是说,如果您的计算机有足够的内存,使用64位JVM将允许您找到32位JVM无法找到的连续内存。我个人曾使用64位J

我知道JDK 7应该是hotspot和jrockit之间的合并,而不会有jrockit 1.7。(来源:)我有一个项目需要jrockit的非连续堆特性以及一些java 1.7特性,所以既然JDK 7是一个合并,它是否支持非连续堆,因为我找不到这样的官方文档

我假设您询问的是非连续堆,因为您正遭受内存碎片的困扰。很多时候,您的32位地址空间是零碎的,但您的64位地址空间不是零碎的。也就是说,如果您的计算机有足够的内存,使用64位JVM将允许您找到32位JVM无法找到的连续内存。我个人曾使用64位JVM在32位JVM无法分配2GB以上的堆时分配4GB以上的堆

尽管它看起来不像是JDK 7中的任意非连续堆,但您可以尝试使用G1垃圾收集器。根据:

堆被划分为一组大小相等的堆区域,每个区域都有一个连续的虚拟内存范围

从理论上讲,这允许您使用非连续堆。唯一的限制是区域大小必须相等

根据需要,可以使用此命令行选项控制区域大小:

-XX:G1HeapRegionSize=n:使用G1,Java堆被细分为大小一致的区域。这将设置各个子分区的大小。此参数的默认值根据堆大小以符合人体工程学的方式确定。最小值为1Mb,最大值为32Mb


我希望这会有所帮助。

在您链接到的页面上,在“聚合JVM是否会获得允许JRockit在Windows上分配更多堆的功能”的问题下,您的问题没有得到回答吗?听起来不错,但我做了一些测试,它的表现也一样。它们可能意味着为了更好的GC而对连续堆进行分区。但有些事情很奇怪。我指定了1g,visualVM显示的最大值为2g。。。