先存两张介绍jvm内存比较经典的图
?
关于方法区,永久代,元空间的学习总结
?
方法区是jvm规范当中的一个概念,具体实现各虚拟机和各个版本有所不同。
方法区主要用来存储编译后的代码,常量池,类元信息等。
javase8之前的hotspot虚拟机是用永久代来实现方法区的,永久代是堆内存的一个逻辑组成部分,jvm可以选择性的不去回收永久代的内存空间
javase8开始引入元空间,原有的方法区中定义的元素分两个地方存储,常量池存储在堆内存中,类的元信息存储在元空间中。
元空间是jvm内存以外的一块空间,没有固定大小,并且是不连续的可以动态扩张。这也是移除永久代的一个原因,因为之前永久代有固定大小,会有OOM问题。
?
FIY
https://rednaxelafx.iteye.com/blog/905273