堆内存大小的配置

设置

  • Java堆区用于存储java对象实例,堆的大小在jvm启动时就已经设定好了,可以通过 "-Xmx"和 "-Xms"来进行设置
    • -Xms 用于表示堆的起始内存,等价于 -XX:InitialHeapSize
      • -Xms 用来设置堆空间(年轻代+老年代)的初始内存大小
        • -X 是jvm的运行参数
        • ms 是memory start
    • -Xmx 用于设置堆的最大内存,等价于 -XX:MaxHeapSize
  • 一旦堆区中的内存大小超过 -Xmx所指定的最大内存时,将会抛出OOM异常
  • 通常会将-Xms和-Xmx两个参数配置相同的值,其目的就是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小,从而提高性能
  • 默认情况下,初始内存大小:物理内存大小/64;最大内存大小:物理内存大小/4
    • 手动设置:-Xms600m -Xmx600m

查看

方式一: 终端输入jps, 然后jstat -gc 进程id

方式二:(控制台打印)Edit Configurations  ->  VM Options 添加  -XX:+PrintGCDetails

方式三:

 1 public class HeapSpaceInitial {
 2     public static void main(String[] args) {
 3 
 4         //返回Java虚拟机中的堆内存总量
 5         long initialMemory = Runtime.getRuntime().totalMemory() / 1024 / 1024;
 6         //返回Java虚拟机试图使用的最大堆内存量
 7         long maxMemory = Runtime.getRuntime().maxMemory() / 1024 / 1024;
 8 
 9         System.out.println("-Xms : " + initialMemory + "M");
10         System.out.println("-Xmx : " + maxMemory + "M");
11 12 }

附:JVM学习目录

原文地址:https://www.cnblogs.com/ding-dang/p/13073281.html