JVM配置
基础知识
四大内存:全局数据区,全局代码区,栈,堆
静态分配:全局数据区,全局代码区
动态分配:栈,堆
栈中是存放对象的,对象是由new实例化得到的。在new的过程中产生了数据,数据存放到堆中,故数据有自己的内存地址。
但栈中的对象要和数据一一对应,故对象背后其实是堆中数据的地址引用/内存地址
堆中存放的是对类实例化时产生的数据,存放堆时,是先进入新生代的Eden区。
堆相关
参数说明及默认值:
-Xms 初始堆大小 剩余物理内存的1/64
-Xmx 最大堆大小 剩余物理内存的1/4
-Xmn 新生代大小 整个堆的3/8
-Xmx--Xmn 老年代大小
-Xmn=Eden+S0+S1
默认比例 Eden:S0:S1=8:1:1
JAVA_OPTS后追加-XX:SurvivorRatio=x设置比例来配置Eden,S0,S1
参数总结:
1、jvm内存都是从剩余物理内存借的,tomcat启动成功即jvm配置成功
2、-Xmx和-Xms设置一样
理由:-Xms默认值是剩余物理内存1/64,内存值较小;当大并发流量增大new的数据较多,会出现-Xms内存不够用情况,此时还需临时向物理内存申请借用,借