概述
Java 源代码文件经过编译器编译后会生成字节码文件,经过加载器加载完毕后会交给执行引擎执行
在执行的过程中,JVM 会划出来一块空间来存储程序执行期间需要用到的数据,这块空间一般被称为运行时数据区
运行时数据区(Runtime Data Areas):存放了字节码信息以及程序执行过程的数据,垃圾收集器也会针对运行时数据区进行对象回收的工作
包括:方法区、堆、虚拟机栈、本地方法栈以及程序计数器五个部分
在JDK 1.6、JDK 1.7、JDK 1.8 的内存划分都会有所不同
JDK 8 开始,永久代被彻底移除,取而代之的是元空间
元空间通过本地内存(Native Memory)来实现
的。所以,JDK 8 开始,方法区的实现就是元空间
内存模型
jdk1.7内存模型 如下
- 运行时常量池在 方法区中
- 有一个单独的方法区存储类信息
+------