Java中的MaxHeapSize

时间:2014-04-19 11:09:14

标签: java heap-memory

我在窗口机器中运行命令

java -XX:+PrintFlagsFinal -version | findstr /i "HeapSize PermSize ThreadStackSize

并低于MaxHeapSize

的值
2118123520

这是2020MB但是,当我致电Runtime.getRuntime().maxMemory()时,它只给我259522560,即247MB

任何人都可以建议我为什么会出现这种错配?

2 个答案:

答案 0 :(得分:2)

根据您的上一条评论

  

我正在使用eclipse IDE并且没有更改任何设置。你知道如何在eclipse IDE中更改最大堆大小吗?

设置在运行配置下找到的VM参数。

VM参数通常是更改Java虚拟机(JVM)行为的值。例如,-Xmx256M参数允许Java堆增长到256MB。

有关详细信息,请查看Eclipse launching program and VM arguments

enter image description here

答案 1 :(得分:0)

  

任何人都可以建议我为什么会出现这种错配?

Runtime.getRuntime().maxMemory()调用返回当前JVM的最大堆大小。这由-Xmx命令行选项(例如,java命令)或特定于平台的默认值确定。

您正在运行的命令为您的平台上的-Xmx命令行选项提供了允许的最大值。

显然这些是不同的东西。此外,数字通常不同。