简单的来说
java的堆内存分为两块:permantspace(持久带) 和
heap space。
持久带中主要存放
用于存放静态类型数据,如 Java Class, Method 等,
与垃圾收集器要收集的Java对象关系不大。
而
heapspace分为
年轻带和
年老带
解释:
年轻代的垃圾回收叫 Young GC,
年老代的垃圾回收叫 Full GC。
在年轻代中经历了N次(可配置)垃圾回收后仍然存活的对象,就会被复制到年老代中。因此,可以认为年老代中存放的都是一些生命周期较长的对象
溢出原因:
年老代溢出原因有 循环上万次的字符串处理、创建上千万个对象、在一段代码内申请上百M甚至上G的内存
持久代溢出原因 动态加载了大量Java类而导致溢出
JVM年轻代年与老代轻松理解和JVM堆内存参数设置:https://blog.csdn.net/ShyTan/article/details/81044980
详解JVM中的垃圾回收机制:https://blog.csdn.net/ShyTan/article/details/81036950