Java Memory Heap Size
作用范围
Heap Size 相关参数主要用来控制整个 JVM 堆内存大小。
相关参数
Heap Size 主要参数有 4 个,分别介绍一下:
-Xmx
最大堆内存大小
-Xms
初始堆内存大小
-XX:MaxHeapSize
最大堆内存大小
-XX:InitialHeapSize
初始堆内存大小
使用案例
-Xmx1024M 代表整个 JVM 堆内存空间为 1024M。
-Xms512M 代表整个 JVM 堆内存初始化空间大小为 512M。
-XX:MaxHeapSize=1024M 代表整个 JVM 堆内存空间为 1024M。
-XX:InitialHeapSize=512M 代表整个 JVM 堆内存初始化空间大小为 512M。
参数默认值
以下为默认值均为 Linux 平台下的默认值。
参数 | 默认值 | JDK 版本 |
---|---|---|
-Xmx | - | - |
-Xms | - | - |
-XX:MaxHeapSize | 1002438656 | jdk1.8 |
-XX:InitialHeapSize | 62914560 | Jdk1.8 |
注意事项
Xmx 等价于 MaxHeapSize。
Xms 等价于 InitialHeapSize。
Xmx 不能比 Xms 小。
MaxHeapSize 不能比 InitialHeapSize 小。
Xms 或 InitialHeapSize 不能小于 1M。
HeapSize 必须是 2M (512k * page_size( 默认为 4)) 对齐的。如果设置的不是 2M 对齐的,那么将会自动设置为比我们设置的值要大的 2M 的最小公倍数。
实践问题
同时设置 Xmx 和 MaxHeapSize 会以谁为准?
两个参数谁在后面以谁为准。
$ java -Xmx100M -XX:MaxHeapSize=200M Test $ jps 70857 Test $ jinfo -flag MaxHeapSize 7085 -XX:MaxHeapSize=209715200
$ Java -XX:MaxHeapSize=100M -Xmx200M Test $ jps 71245 Test $ jinfo -flag MaxHeapSize 71245 [14:36:42] -XX:MaxHeapSize=209715200
同时设置 Xms 和 InitialHeapSize 会以谁为准?
两个参数谁在后面以谁为准。
$ java -Xms100M -XX:InitialHeapSize=200M Test $ jps 71703 Test $ jinfo -flag InitialHeapSize 71703 [14:39:00] -XX:InitialHeapSize=209715200
$ java -XX:InitialHeapSize=100M -Xms200M Test $ jps 71856 Test $ jinfo -flag InitialHeapSize 71856 [14:40:37] -XX:InitialHeapSize=209715200
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!