在启动java程序时创建jvm,操作系统会给jvm分配内存,这块内存就是jvm的运行时数据区。
运行时数据区通常包括这几个部分:程序计数器(Program Counter Register)、Java栈(VM Stack)、本地方法栈(Native Method Stack)、方法区(Method Area)、堆(Heap)
经常配置的内存参数主要有如下几个:
- Xss:每个线程的stack大小(栈)
- Xmx:JAVA HEAP的最大值、默认为物理内存的1/4
- Xms:JAVA HEAP的初始值,server端最好Xms与Xmx一样
- Xmn:JAVA HEAP young区的大小(相当于对-XX:newSize、-XX:MaxnewSize同时设置)
- XX:PermSize:设定内存的永久保存区域(JDK7)
- XX:MaxPermSize:设定最大内存的永久保存区域(JDK7)
在JDK1.8中,取消了PermGen,取而代之的是Metaspace,所以PermSize和MaxPermSize参数失效,取而代之的是元空间:
-XX:MetaspaceSize -XX:MaxMetaspaceSize 本次通过配置不同的参数,使用jmap观察参数的变化。 1、试验