堆内存大小的配置
设置
- Java堆区用于存储java对象实例,堆的大小在jvm启动时就已经设定好了,可以通过 "-Xmx"和 "-Xms"来进行设置
- -Xms 用于表示堆的起始内存,等价于 -XX:InitialHeapSize
- -Xms 用来设置堆空间(年轻代+老年代)的初始内存大小
- -X 是jvm的运行参数
- ms 是memory start
- -Xms 用来设置堆空间(年轻代+老年代)的初始内存大小
- -Xmx 用于设置堆的最大内存,等价于 -XX:MaxHeapSize
- -Xms 用于表示堆的起始内存,等价于 -XX:InitialHeapSize
- 一旦堆区中的内存大小超过 -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 }