新生区
- 类:诞生和生长的地方,甚至死亡,new的对象都是在伊甸园区
- 伊甸园区
- 幸存者区(0,1)
加入伊甸园区可以装十个对象,装满了以后就轻GC,幸存者就到0,1区,0,1区装满了后就重GC一次,幸存者就进入养老区,养老区满了以后就OOM了
真理:经过研究,99%的对象都是临时对象!
永久区
这个区域常驻内存的,用来存放JDK自身携带的Class对象,Interface元数据,储存的是java运行时的一些环境或者类信息,这个区域不存在垃圾回收!关闭VM虚拟机就会得到释放这个区域的内存~
一个启动类,加载了大量的第三方jar包,Tomcat部署了太多的应用,大量动态生成的反射类,不断地被加载,直到内存满,就会出现OOM;
元空间是否存在堆中?逻辑上存在,物理上不存在
当出现OOM的时候怎么办?
- 尝试扩大堆内存看结果
- 分析内存,看一下哪个地方出现了问题(专业工具)
- 调参:-Xms1024 -Xmx1024 -XX:printGCDetails