栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

方法区的演进细节

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

方法区的演进细节

  1. 首先明确:只有HotSpot虚拟机才有永久代。其他虚拟机是不存在永久代的概念 。
  2. HotSpot中 方法区的变化:
版本变化
jdk1.6及以前有永久代(占用JVM内存),静态变量存放在永久代里,字符串常量池在运行时常量池中
jdk1.7有永久代,但已经逐步“去永久代”,字符串常量池、静态变量移出,保存在堆中
jdk1.8及以后无永久代,类型信息、字段、方法、运行时常量池保存在本地内存的元空间,但字符串常量池、静态变量仍在堆中

注意:静态变量是指“static Object obj=new Object()”中的obj变量,而不是new的对象。

永久代为什么被元空间替换 ?
(1)为永久代设置空间大小是很难确定的。在某些场景下,如果动态加载类过多,容易产生OOM。而元空间和永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。因此 ,默认情况下,元空间的大小仅受本地内存限制。
(2)对永久代进行调优是很困难的。
(3)替换成元空间也能够避免频繁的进行Full GC。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/604253.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号