jvm的永久代

记得曾经在课本上看到了永久代的概念,但是没有看过在哪里会有用到,最近准备面试,想深入的了解永久代到底是什么

jvm的语言规范里面定义了方法区(为了区分叫做“非堆”)的概念,方法区主要用于存储类的信息、常量池、方法数据、方法代码等信息。但是不同的虚拟机有不同的实现,其中hotspot实现通过永久代来实现了方法区。

在java代码中如果在一个while循环里面不停的创造对象的话就会发生永久代溢出。

在java8中完全移除了永久代概念,使用元空间来代替,元空间不在虚拟机中,而是使用的本地内存。

为什么需要将永久代替换成元空间?(工程上方案的改进都是在修补前面的漏洞,都不是刚开始就有一个顶级的设计)

永久代gc代价大、oracle将来会合并hotspot和jrockit

参考:http://www.cnblogs.com/paddix/p/5309550.html

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值