gpt4 book ai didi

Java堆分布概念查询

转载 作者:行者123 更新时间:2023-12-01 15:10:20 25 4
gpt4 key购买 nike

我正在使用以下 GC 内存参数:

导出 MEM_OPTS="-Xmx2900m -Xms2900m -XX:NewSize=786m -XX:MaxNewSize=786m -XX:+UseTLAB -XX:MaxPermSize=128m"

我使用的是 32 位 JVM。我的服务器 RAM 是 10 GB。

从 Oracle 网站,我得到了

Why can't I get a larger heap with the 32-bit JVM?

32 位 JVM 的最大理论堆限制为 4G。由于各种额外的限制,例如可用交换、内核地址空间使用、内存碎片和虚拟机开销,实际上该限制可能要低得多。在大多数现代 32 位 Windows 系统上,最大堆大小范围为 1.4G 到 1.6G。在 32 位 Solaris 内核上,地址空间限制为 2G。在运行 32 位 VM 的 64 位操作系统上,最大堆大小可能更高,在许多 Solaris 系统上接近 4G。从 Java SE 6 开始,不支持 Windows/3GB boot.ini 功能。如果您的应用程序需要非常大的堆,您应该在支持 64 位应用程序的操作系统版本上使用 64 位 VM。有关详细信息,请参阅 Java SE 支持的系统配置。

好的。现在让我们假设我的 32 位服务器可以占用 3.2 GB。据我所知:

-Xmx is the total heap memory
-XX:NewSize / -XX:MaxNewSize is the range of the size of the new generation inside that heap
the difference is the range of the size of the old generation
-XX:PermSize / -XX:MaxPermSize is the range of the size of the permanent generation, which is the non-heap memory

据此,3.2 GB 不应包含 PermSize,因为这不是堆内容。对吗?

如果我错了,请告诉我。

我可以将 3.2 GB 划分为 Xmx 和 NewSize 。对吗?

最佳答案

NewSize 是最大堆大小的一部分。它必须更小。

如果您有 Java 6,我会使用 64 位 JVM,因为它会让您的生活更简单。 ;) 除非您必须使用 32 位共享库,否则几乎没有什么缺点。

顺便说一句-XX:+UseTLAB是默认值。

关于Java堆分布概念查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12422039/

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