我在窗口机器中运行命令
java -XX:+PrintFlagsFinal -version | findstr /i "HeapSize PermSize ThreadStackSize
并低于MaxHeapSize
2118123520
这是2020MB
但是,当我致电Runtime.getRuntime().maxMemory()
时,它只给我259522560
,即247MB
。
任何人都可以建议我为什么会出现这种错配?
答案 0 :(得分:2)
根据您的上一条评论
我正在使用eclipse IDE并且没有更改任何设置。你知道如何在eclipse IDE中更改最大堆大小吗?
设置在运行配置下找到的VM参数。
VM参数通常是更改Java虚拟机(JVM)行为的值。例如,-Xmx256M参数允许Java堆增长到256MB。
有关详细信息,请查看Eclipse launching program and VM arguments
答案 1 :(得分:0)
任何人都可以建议我为什么会出现这种错配?
Runtime.getRuntime().maxMemory()
调用返回当前JVM的最大堆大小。这由-Xmx命令行选项(例如,java
命令)或特定于平台的默认值确定。
您正在运行的命令为您的平台上的-Xmx命令行选项提供了允许的最大值。
显然这些是不同的东西。此外,数字通常不同。