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


Java     

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!