Java中的MaxHeapSize
我在窗口机器中运行命令Java中的MaxHeapSize,java,heap-memory,Java,Heap Memory,我在窗口机器中运行命令 java -XX:+PrintFlagsFinal -version | findstr /i "HeapSize PermSize ThreadStackSize 并获得低于MaxHeapSize 2118123520 这是2020MB然而,当我调用Runtime.getRuntime().maxMemory()时,它只给我259522560即247MB 有人能告诉我为什么会出现这种不匹配吗?根据您最后的评论 我正在使用EclipseIDE,没有更改任何设置。您知道
java -XX:+PrintFlagsFinal -version | findstr /i "HeapSize PermSize ThreadStackSize
并获得低于MaxHeapSize
2118123520
这是2020MB
然而,当我调用Runtime.getRuntime().maxMemory()
时,它只给我259522560
即247MB
有人能告诉我为什么会出现这种不匹配吗?根据您最后的评论 我正在使用EclipseIDE,没有更改任何设置。您知道如何更改EclipseIDE中的最大堆大小吗 设置在运行配置下找到的VM参数 VM参数通常是改变Java虚拟机(JVM)行为的值。例如,-Xmx256M参数允许Java堆增长到256MB。 有关更多信息,请查看 有人能告诉我为什么会出现这种不匹配吗
Runtime.getRuntime().maxMemory()
调用返回当前JVM的最大堆大小。这由-Xmx命令行选项(例如,对于java
命令)或特定于平台的默认值决定
您正在运行的命令为您的平台上的-Xmx命令行选项提供了允许的最大值
显然,这些是不同的事情。此外,数字通常是不同的。我猜您有一台8GB的机器,因此默认值是2GB。运行程序时,您已减小了最大堆大小,因此只能获得约256 MB的内存,因为您已将其设置为256 MB。您是否尝试过使用
-Xmx100m-Xms100m
完美。但我使用的是EclipseIDE,没有更改任何设置。您知道如何更改EclipseIDE中的最大堆大小吗?谢谢-Xmx100m-Xms100m现在为我工作了。