Java8新特性之虚拟机的改变
撤销了永久带,引入了元空间:
在HotSpot虚拟机中,jkd1.6时,设计团队把方法区设计为永久带,这样GC工作区域就可以扩展至方法区。这种策略可以可以避免为方法区单独设计垃圾回收机制,但是坏处就是,方法区的回收条件十分苛刻,而且回收效果也不好。
在jdk1.7版本,设计团队也意识到这个问题,但是只将方法区中的字符串常量池移除永久带。
到了最新的jdk1.8版本,就不再有永久带这个概念,并且用元空间来代替原来的永久代
元空间内的规则:元空间中类及其相关的元数据和类加载器生命周期一致,每个类加载器有专门的存储空间,不会单独回收某个类,位置也是固定的,但是当类加载器不再存活时会把它相关的空间全部移除。