首页 > 编程语言 > 详细

HotSpot Java虚拟机中的“方法区”“持久代”“元数据区”的关系?

时间:2017-09-20 21:40:35      阅读:343      评论:0      收藏:0      [点我收藏+]

Sun/Oracle JDK的HotSpot VM中,直到JDK7都有“持久代”(Permanent Generation,简称PermGen)。也称为方法区。
Oracle JDK8的HotSpot VM去掉“持久代”,以“元数据区”(Metaspace)替代之。

Oracle是在JDK7的时候宣布移除PermGen内存区域,但是知道JDK8才最终移除。

在JDK7之前,所谓的Permanet Generation内存区域其实包含了两个部分:
  1. 方法区
  2. Internded String

方法区主要存储了class的一些信息,包括运行时常量池、Classloader的引用,字段数据,方法数据等等。
Interned String内存区域是在JDK 7的时候从JVM内存区域里面移除的。
这里有一篇关于移除PermGen内存区域的说明,有兴趣可以看下:

JDK8引入了一个新的native的内存区块,Metaspace(也就是题主所说的“元数据”区域)。也就是说,之后你在调优或者调查JVM问题的时候就不用和PermGen区域打交道了,也不会有java.lang.OutOfMemoryError: PermGen 这种内存不足的问题来骚扰你。



作者:Tony Tang
链接:https://www.zhihu.com/question/27429881/answer/36600315
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

HotSpot Java虚拟机中的“方法区”“持久代”“元数据区”的关系?

原文:http://www.cnblogs.com/tv151579/p/7563492.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!