答案 1
它因实现和版本而异,但通常取决于所使用的VM(例如客户端或服务器,请参阅和参数)以及系统内存。-client
-server
通常默认值为物理内存的 1/4 或 1GB(以较小者为准)。client
此外,Java 配置选项(命令行参数)可以“外包”到环境变量,包括 ,它可以更改缺省值(意味着指定新的缺省值)。具体来说,环境变量由所有Java工具检查,如果存在,则使用(更多详细信息,请点击此处和此处)。-Xmx
JAVA_TOOL_OPTIONS
您可以运行以下命令以查看默认值:
java -XX:+PrintFlagsFinal -version
它给你一个loooong列表,在,在。过滤输出(例如 )或将其保存在文件中,以便您可以在其中进行搜索。-Xmx
MaxHeapSize
-Xms
InitialHeapSize
|grep
答案 2
就像你提到的,默认值(最大堆大小)取决于您的系统配置。-Xmxsize
Java8 客户机
为 Xmssize
(最小堆大小)占用物理内存的 1/64,而在 -Xmxsize
(最大堆大小)中占用物理内存的 1/4 中较小。
这意味着,如果您的物理内存为 8GB RAM,则将具有 8*(1/64) 的较大内存和 8*(1/4) 的较小内存。Xmssize
-Xmxsize
您可以使用以下命令检查默认的堆大小
在窗口中:
java -XX:+PrintFlagsFinal -version | findstr /i "HeapSize PermSize ThreadStackSize"
在 Linux 中:
java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
这些默认值也可以覆盖到所需的金额。
推荐
-
为什么这个Java程序占用了这么多内存? 我有一小段代码,每五分钟截取一次桌面的屏幕截图。然而,我对它占用的内存量有点困惑 - 通常它会爬升到200mb的RAM,我确信这是多余的......谁能告诉我a)减少内存占用的明智方法或b)为什么
-
-
在Android中记忆文件有什么用途 我想将一些字节写入共享内存。这是在我的应用程序中完成的1。从我的另一个应用程序:应用程序2,我想访问该共享内存以读取写入的字节。为此,我尝试使用Android的MemoryFile类。我被困在如何
-
如何启动具有更多内存的 Java 小程序? 对于大型 Java 应用程序,缺省的最大堆内存可能很小。是否有任何小程序参数可以增加已签名小程序的增量? 对于Java程序,这是一个简单的命令行参数,但对于浏览器中的小程序来说,这是如
-