1 前言
讲多了Class文件、类加载过程,我们的Class文件就要进到JVM内存里了,那就先来了解下JVM内存模型都进行了哪些演变。
主要演变的就是:1.7、1.8 都是对方法区中的改变
概念的统一:我看一些文章说方法区、有永久代、有元空间这三者的关系是什么呢
(1)方法区可以看作是JVM逻辑上管理一片区域的名字也是概念,可以把它比作成接口
(2)永久代和元空间是对方法区的实现,只不过1.7及以前是永久代,1.8开始永久代被替换成元空间了
我们这里是针对主流的HotSpot的JVM进行的。
2 内存模型演变
每个版本基本都包含五大部分:栈、堆、本地方法栈、方法区、程序计数器
看运行时数据区要以线程的角度去看,其中:栈、本地方法栈、程序计数器都是线程私有,堆和方法区是线程共享的。
2.1 JVM1.6及以前的版本
1.6及以前JVM运行时数据区,方法区叫永久代
2.2 JVM1.7
1.7永久代还存在,但是已经逐步”去永久代“,字符串常量池、静态变量移到堆中。
2.3 JVM1.8及以后
1.8以后,无永久代,类型信息、字段、方法、常量直接保存在元空间,元空间用的是直接内存,字符串常量池和静态变量还是保持在堆中。
小结:
标签:1.7,演变,永久,线程,内存,JVM,方法 From: https://www.cnblogs.com/kukuxjx/p/17113794.html