博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JVM体系结构之三:方法区之2(jdk1.6,jdk1.7,jdk1.8下的方法区变迁)
阅读量:6426 次
发布时间:2019-06-23

本文共 890 字,大约阅读时间需要 2 分钟。

方法区

方法区存储虚拟机加载的
类信息
常量
静态变量,即时编译器
编译后的代码等数据。HotSpot中也称为永久代(Permanent Generation),(存储的是除了Java应用程序创建的对象之外,HotSpot虚拟机创建和使用的对象)。为什么称为永久代呢?? 各个地方说的都不清楚,查看官方文档,解释为:永久代中的对象并不是永久的,只是历史上被叫做永久代罢了。 In fact, the objects in it are not “permanent”, but that's what it has been called historically.
方法区在不同虚拟机中有不同的实现,HotSpot在1.7版本以前和1.7版本,1.7后都有变化。

jdk7版本以前的实现

jdk7版本的改动是把字符串常量池移到了堆中。

jdk8 MetaSpace

jdk1.8中则把永久代给完全删除了,取而代之的是
MetaSpace
运行时常量池和静态变量都存储到了堆中,MetaSpace存储类的元数据,MetaSpace直接申请在本地内存中(Native memory),这样类的元数据分配只受本地内存大小的限制,OOM问题就不存在了。除此之外,还有其他很多好处:
  • Take advantage of Java Language Specification property : Classes and associated metadata lifetimes match class loader’s
  • Linear allocation only
  • No individual reclamation (except for RedefineClasses and class loading failure)
  • No GC scan or compaction
  • No relocation for metaspace objects
 jdk1.8中,常量池和静态变量都存储到了堆中,可以通过《 》中示例说明。
其它元数据信息存放在元空间内,可通过《 》的示例说明。

转载地址:http://ryyga.baihongyu.com/

你可能感兴趣的文章
OSPF:DR、BDR选举算法
查看>>
Lync 2013部署图片赏析-Lync 2013 安装部署向导
查看>>
领域驱动设计之工厂模式实现场景
查看>>
centos7.2安装mysql5.7.13实现 ssl 安全连接的主从复制
查看>>
粗看了一下html5
查看>>
IO模型
查看>>
2018.3.7 11周2次课
查看>>
我的友情链接
查看>>
如果出现oracle监听停止的情况,如何处理
查看>>
nginx反向代理,负载均衡
查看>>
数据库关于表空间的操作语句
查看>>
Python学习记录
查看>>
iOS工程师 - 简历
查看>>
linux下卸载软件
查看>>
mysql 线程
查看>>
我的友情链接
查看>>
mysql主从复制--mysql-5.5异步、半同步配置
查看>>
centos 7 epel 163 yum 源
查看>>
管理工具里没有AD相关快捷方式的处理方法
查看>>
onKeyDown方法中的返回值
查看>>