可以用命令直接查询:
java -XX:+PrintFlagsFinal -version | grep HeapSize
或者使用java代码:
Runtime.getRuntime().maxMemory();
官方文档:(建议点开查看)
1. client模式
初始堆大小:
物理内存的1/64,但最小是8MB。
最大堆大小:
在物理内存达到192MB之前,JVM最大堆大小为物理内存的一半;
在物理内存大于192MB,在到达1GB之前,JVM最大堆大小为物理内存的1/4;
大于1GB的物理内存,最大堆大小为256M。
2. server模式:
总体与Client相同,但是最大堆大小可以更大;
最大堆大小:
如果实际内存大于1G,最大堆大小为内存的1/4;在32位JVM下,如果物理内存在4G或更高,最大堆大小可以提升至1GB,如果是在64位JVM下,如果物理内存在128GB或更高,最大堆大小可以提升至32GB。
比如:64位机器4G内存,server模式下默认启动JVM,初始堆为64M,最大堆为1G;