Bootstrap

JVM执行流程与架构(对应不同版本JDK)

直接上图(对应JDK8以及以后的HotSpot)
请添加图片描述

这里主要区分说明一下 方法区字符串常量池 的位置更迭:

方法区

JDK7 以及之前的版本将方法区存放在堆区域中的 永久代空间,堆的大小由虚拟机参数来控制。

JDK8 以及之后的版本将方法区存放在 元空间中,元空间位于 操作系统维护的直接内存中,默认情况下只要不超过操作系统承受的上限,可以一直分配。

字符串常量池

JDK6 以及之前的版本存储在方法区中的运行时常量池中

JDK7 以及以后存储在堆(Heap)中

;