2

我知道默认的 Java 堆内存是 128 MB。由于它是默认值,我想知道该内存是否会根据 RAM 大小自动更改。例如,对于具有 128 MB RAM 的机器,堆内存 128 太多,应该自动更改。因为如果一个应用程序使用了所有的 128 个堆,PC 最终会遇到麻烦。

请帮忙。

4

4 回答 4

8

在 Java 1.6 更新 18(及更高版本)中,如果未指定,客户端 JVM 中的默认堆大小遵循以下规则:

默认的最大堆大小是物理内存的一半,最大物理内存大小为 192 MB,否则为物理内存的四分之一,最大物理内存大小为 1 GB。

例如,如果您的机器有 128 MB 的物理内存,那么最大堆大小为 64 MB,大于或等于 1 GB 的物理内存导致最大堆大小为 256 MB。

取自1.6.0_18 更新说明

在以前的 Java 版本中,堆大小默认情况下是不可变的。

于 2012-06-13T18:56:48.793 回答
3

-Xmx不,除非您在启动时使用该选项要求它,否则它不会自动更改。

在任何情况下,32 位机器上的内存都不能超过 2 GB。如果您需要更多,则必须获得具有大量 RAM 的 64 位操作系统。

于 2012-06-13T18:52:37.220 回答
1

您可以使用 aptions -Xmx 和 -Xms 指定 JVM 堆大小

-Xmx - 最大尺寸。-Xms - 最小尺寸。

你指定喜欢

 -Xmx64m -Xms32m  (for 64 and 32 MB)
于 2012-06-13T18:52:45.660 回答
1

不,它不会自动更改。在此处查看有关 HotSpot JVM 内存选项的更多信息。

更多关于处理 Java OutOfMemoryError 的信息

于 2012-06-13T18:54:51.103 回答