gpt4 book ai didi

java - JDK 7 使用非连续堆吗?

转载 作者:行者123 更新时间:2023-12-02 07:38:21 24 4
gpt4 key购买 nike

我知道 JDK 7 应该是 hotspot 和 jrockit 之间的合并,并且不会有 jrockit 1.7。 (来源:https://blogs.oracle.com/henrik/entry/java_7_questions_answers)我有一个项目需要jrockit的非连续堆功能以及一些java 1.7功能,所以既然JDK 7是合并,它是否支持非连续堆,因为我找不到官方文件这么说?

最佳答案

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

尽管 JDK 7 中似乎没有出现任意非连续堆,但您可以尝试使用 G1 垃圾收集器。根据http://www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html :

The heap is partitioned into a set of equal-sized heap regions, each a contiguous range of virtual memory.

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

根据http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/G1GettingStarted/index.html#t6您可以使用此命令行选项来控制区域大小:

-XX:G1HeapRegionSize=n: With G1 the Java heap is subdivided into uniformly sized regions. This sets the size of the individual sub-divisions. The default value of this parameter is determined ergonomically based upon heap size. The minimum value is 1Mb and the maximum value is 32Mb.

我希望这会有所帮助。

关于java - JDK 7 使用非连续堆吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11899468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com