1、基础

1.7 的方法区:被称为永久代,放于堆当中。
1.8 的方法区:被称为元空间,在物理内存中,但是在物理内存中只有 字节码文件和静态变量,常量还是存于堆当中。

参考链接:https://www.toutiao.com/a6768998589126410756/?timestamp=1583393518&app=news_article_lite&group_id=6768998589126410756&req_id=202003051531580100260770662A27E8CD

2、新生代

年轻代分三个区。一个Eden区,两个Survivor区(一般而言)

默认比例
新生代:老生代 = 1:2
伊甸区:form:to = 8:1:1

3、老年代

4、堆设置

-Xms:初始堆大小
-Xmx:最大堆大小
-XX:NewSize=n:设置年轻代大小
-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
-XX:MaxPermSize=n:设置持久代大小
参考链接:https://blog.51cto.com/u_15067246/4297845

5、常见的参数设置


Java整个堆大小设置,Xmx 和 Xms设置为老年代存活对象的3-4倍,即FullGC之后的老年代内存占用的3-4倍
永久代 PermSize和MaxPermSize设置为老年代存活对象的1.2-1.5倍。
年轻代Xmn的设置为老年代存活对象的1-1.5倍。
老年代的内存大小设置为老年代存活对象的2-3倍