文章目录
前言
JVM内存模型
堆(Heap)配置
Xms与InitialHeapSize
Xmx与MaxHeapSize
Heap的缺省配置
Default Heap Size
Client JVM Default Initial and Maximum Heap Sizes
Server JVM Default Initial and Maximum Heap Sizes
堆(Heap)的动态调整
Heap大小配置建议
结语
前言
JVM是Java语言的核心基石所在,它为Java提供了强大的跨平台能力,关于JVM的内部结构,想必您并不陌生,有大量的文章来介绍JVM的内部组成结构,本篇的重点不在于此,这里假定您对JVM的内部组成结构已经比较了解。
JVM中提供了大量的配置参数,通过JVM的参数配置,可以让JVM的性能更加适配于应用服务,发挥出更加强大的性能,那么本篇,就来简单聊一下JVM的参数配置,首先,来看一下JVM堆区的配置。
JVM内存模型
上图就是JVM的内存模型,JVM内存结构主要有三大块:堆内存、方法区和栈。
对于大多数应用来说,Java堆(Java Heap)是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。
堆内存是JVM中最大的一块由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间、From Survivor空间、To Survivor空间。
我们首先来看其中最为重要的一个部分,堆(Heap)区。
堆(Heap)配置
按照官方的说法:“Java 虚拟机具有一个堆(Heap),堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”
堆区的大小,主要由以下几个参数进行控制:
1、Xms
2、Xmx
3、MaxHeapSize
4、InitalHeapSize
我们来分别看一下这几个参数各自的用途。
Xms与InitialHeapSize
Xms等价于InitialHeapSize,表示Heap的初始化大小,即J