原文网址:JVM垃圾回收--内存模型/垃圾回收流程_IT利刃出鞘的博客-CSDN博客
简介
本文介绍Java各个代的关系(内存模型)及垃圾收集流程。
内存模型
JDK8的内存模型
在Java中所有的垃圾收集问题几乎都是针对堆内存空间完成的,要想充分理解垃圾的收集流程,必须首先掌握Java堆内存的内存模型。如下图所示:
内存模型的变化
JDK1.8以前共用永久代,而从JDK1.8后永久代被替换为元空间(MetaSpace)。
在JDK1.8之前,HotSpot在努力改变永久代的存储位置,例如,在JDK1.6时提供有永久代,到了JDK1.7时又将永久代的部分操作移交给了堆内存,而在JDK1.8时使用元空间代替了永久代。如下图所示:
可以发现,在JDK1.8之前都会提供有永久代,此部分内存是不受GC控制的。在最初的设计中,都将方法区保存在了永久代,所以一旦方法执行中出现了内存不足的情况,将会抛出:“OutOfMemoryError:PermGen space”错误。同时Oracle也在考虑将HotSpot与JRockit(此虚拟机不存在永久代)两个虚拟机合二为一,所以此内存空间被元空间所替代。
垃圾收集流程
上边是文章的部分内容,为便于维护,全文已迁移到此网址:JVM-内存模型/垃圾回收流程 - 自学精灵