注意:本系列博客,主要参考自以下三本书
《分布式Java应用:基础与实践》《深入理解Java虚拟机(第二版)》《深入分析Java web技术内幕》
1、为什么要了解JVM内存管理机制
2、JVM内存结构
根据上图,JVM内存结构包括:
注意点:
2.1、方法区
<jvm-arg>-XX:PermSize=256M</jvm-arg> <jvm-arg>-XX:MaxPermSize=256M</jvm-arg>
2.2、堆
<jvm-arg>-Xms2048m</jvm-arg> <jvm-arg>-Xmx2048m</jvm-arg> <jvm-arg>-Xmn512m</jvm-arg> <jvm-arg>-XX:SurvivorRatio=8</jvm-arg> <jvm-arg>-XX:MaxTenuringThreshold=15</jvm-arg>
可以看到,-Xms==-Xmx==2048m,年轻代大小-Xmn==512m,这样,年老代大小就是2048-512==1536m,这个比率值得记住,在企业开发中,年轻代:年老代==1:3,而此时,我们配置的-XX:MaxTenuringThreshold=15(这也是默认值),年轻代对象经过15次的复制后进入到年老代(关于这一点,在之后的GC机制中会说),
2.3、栈
<jvm-arg>-Xss1m</jvm-arg>
2.4、PC寄存器(程序计数器)