方法区的演进细节

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值