当前位置:网站首页>方法区、永久代、元空间的关系
方法区、永久代、元空间的关系
2022-07-23 05:50:00 【金清泽】
什么是方法区、永久代、元空间
众所周知,方法区是运行时数据区很重要的一部分,是用来存储类的信息、常量池、方法数据、及时编译器编译的代码等。
永久代是jdk1.7之前对方法区的一个落地实现,存在于堆中,用于存储类的信息和字符串常量池,同样包含SE库的类和方法。在jdk1.7时将字符串常量池从永久代移动到堆中,永久代在jdk8被移除。
元空间和永久代类似,都是对方法区的一个落地实现,他里面存储的数据比永久代纯粹很多,就是类的元数据。元空间的位置不存在于虚拟机中,而是在本地内存中。
为什么以元空间取代永久代
永久代的缺点
- 占用了堆的空间
- 永久代空间太大占用过多堆内存,太小存储类信息有限
- 永久代的 GC 会触发堆的 GC
为什么之前可以这么设计?
当时还是32位机,并看的不是很清楚,到现在64位机,弊端就暴露出来。
元空间解决了永久代的问题,jdk1.8起开始取代永久代存放类信息
元空间存在的问题
元空间是按照类加载器分配空间的,也就是说类加载器加载了一个类,元空间分配给这个类的空间其实是分配给的类加载器,不同的类加载器占用不同的空间,它们之间不共享类信息,如果程序中有大量的类加载器,而它们加载的类非常少,那么有可能会造成大量的空间浪费。
空间分隔开也久可能会造成内存空间碎片化。
边栏推荐
- 高压MOS管KNX42150 1500V/3A 应用于变频器电源-逆变器等
- 复杂网络-常用绘图软件和库
- vlan配置实例学习记录
- 常见的定时任务Scheduled cron 表达式
- Write a test case where the executable depends on.So
- C randomly generate a score to judge its grade (excellent, good, medium, poor, failed)
- 雷达导论PART VII.4 SAR系统设计
- Matplotlib-实现常见概率分布
- Eth trunk configuration instance learning record
- Static routing principle and configuration
猜你喜欢
随机推荐
静态路由的搭建
2020-09-22
linx的链接、一级目录、重定向、cp与mv
常见的cmd命令快速打开程序
Unity 模型显示到UI前面,后面的UI抖动
Static route configuration instance learning record
OpenCV图像处理(上)几何变换+形态学操作
C output Fibonacci sequence
vlan配置实例学习记录
Copy, paste and drag files between VMware virtual machine and host
App compilation and packaging deployment manual
Ronge answer script production (latest in 2020)
HCIA----05 RIP
Simple use of psutil monitoring
OSPF 单区域配置实例学习记录
Make local apt source offline installation
Query the cross compiled executable dependency Library
2020-09-20
Summary of basic SQL operations
OSPF实验









