首页 > 其他分享 >JVM8为什么要增加元空间 ?

JVM8为什么要增加元空间 ?

时间:2024-07-02 19:02:20浏览次数:30  
标签:为什么 存储 JVM8 Java GC JVM 空间 持久

持久代

持久代的大小

为什么移除持久代 ?

元空间

元空间的特点:


持久代

持久代中包含了虚拟机中所有可通过反射获取到的数据,比如Class和Method对象。不同的Java虚拟机之间可能会进行类共享,因此持久代又分为只读区和读写区。

JVM用于描述应用程序中用到的类和方法的元数据也存储在持久代中。JVM运行时会用到多少持久代的空间取决于应用程序用到了多少类。除此之外,Java SE库中的类和方法也都存储在这里。

如果JVM发现有的类已经不再需要了,它会去回收(卸载)这些类,将它们的空间释放出来给其它类使用。Full GC会进行持久代的回收。
JVM中类的元数据在Java堆中的存储区域。
Java类对应的HotSpot虚拟机中的内部表示也存储在这里。
类的层级信息,字段,名字。

持久代的大小

它的上限是MaxPermSize,默认是64M
Java堆中的连续区域 : 如果存储在非连续的堆空间中的话,要定位出持久代到新对象的引用非常复杂并且耗时。卡表(card table),是一种记忆集(Remembered Set),它用来记录某个内存代中普通对象指针(oops)的修改。
持久代用完后,会抛出OutOfMemoryError "PermGen space"异常。解决方案:应用程序清理引用来触发类卸载;增加MaxPermSize的大小。
需要多大的持久代空间取决于类的数量,方法的大小,以及常量池的大小。

为什么移除持久代 ?

1、它的大小是在启动时固定好的——很难进行调优。-XX:MaxPermSize,设置成多少好呢? 2、
HotSpot的内部类型也是Java对象:它可能会在Full GC中被移动,同时它对应用不透明,且是非强类型的,难以跟踪调试,还需要存储元数据的元数据信息(meta-metadata)。
3、简化Full GC:每一个回收器有专门的元数据迭代器。
4、可以在GC不进行暂停的情况下并发地释放类数据。
5、使得原来受限于持久代的一些改进未来有可能实现

元空间

持久代的空间被彻底地删除了,它被一个叫元空间的区域所替代了。持久代删除了之后,很明显,JVM会忽略PermSize和MaxPermSize这两个参数,还有就是你再也看不到java.lang.OutOfMemoryError:

PermGen error的异常了。原来类的静态变量和Interned Strings 都被转移到了java堆区,
只有class元数据才在元空间。
JDK 8的HotSpot JVM现在使用的是本地内存来表示类的元数据,这个区域就叫做元空间。

元空间的特点:

  • 1、充分利用了Java语言规范中的好处:类及相关的元数据的生命周期与类加载器的一致。
  • 2、每个加载器有专门的存储空间
  • 3、只进行线性分配
  • 4、不会单独回收某个类
  • 5、省掉了GC扫描及压缩的时间
  • 6、元空间里的对象的位置是固定的
  • 7、如果GC发现某个类加载器不再存活了,会把相关的空间整个回收掉

标签:为什么,存储,JVM8,Java,GC,JVM,空间,持久
From: https://blog.csdn.net/w12345ll/article/details/140134151

相关文章

  • 为什么 [] == ![] 为 true?
    ......
  • MyBatis是什么以及为什么需要ORM框架、快速搭建
    MyBatis是什么MyBatis的前身是Ibatis,本质是一款半自动化的ORM框架,除了能对POJO进行ORM映射之外,还可以编写SQL脚本语句。主要是为了解决我们平时开发中经常写的JDBC代码,将繁琐的JDBC代码封装起来,化繁为简。MyBatis映射文件四要素:1.SQL语句2.映射规则3.POJO4.Mapper接口为......
  • 为什么单元测试不是持续交付的唯一答案
    为了让持续集成和持续交付(CI/CD)成为现实,企业必须审查其内部流程,并重新思考如何处理软件交付生命周期。过去的清单和评论根本不是前进的方向。残酷的事实是,大多数企业在持续交付的道路上相当落后。对软件交付过程本身进行根本性的改变与从货架上取下一些工具这样的半个步骤是完全不......
  • 为什么80%的码农都做不了架构师?
    文章目录一、技术广度和深度的要求1.1技术广度1.2技术深度二、全局视角和系统思维2.1全局视角2.2系统思维三、沟通能力和团队合作3.1沟通能力3.2团队合作四、业务理解和需求分析4.1业务理解4.2需求分析五、持续学习和创新能力5.1持续学习5.2创新能力六、......
  • 为什么越来越多企业选择SCDN?揭秘背后的真相!
    在数字化浪潮中,企业的业务扩展和用户体验的提升已经成为重要的竞争力来源。近期,我注意到一个名为SCDN的解决方案正在被越来越多的企业所青睐。那么,SCDN究竟有何魅力,能让这些企业纷纷选择它呢?让我为你揭开背后的真相。提升用户访问体验,秒速加载不是梦想象一下,当你打开一个网......
  • 为什么升级到 MySQL 8.x 后,带有多个 IN 值的查询会更昂贵?
     MySQL的范围优化有多个IN值的查询在MySQL查询优化器中,会使用"等值范围优化"(EqualityRangeOptimization)。假设我们的查询是这样的:SELECTCOUNT(*)FROMtest.sbtest1WHEREidIN(10,50,200,...,30822);比较列表中有一万个值。在MySQL5.7下运行这个程序会得到以......
  • 为什么网络爬虫广泛使用HTTP代理?
    一、引言网络爬虫作为自动抓取互联网信息的重要工具,在现代社会中发挥着不可或缺的作用。然而随着网络环境的日益复杂,网站反爬虫技术的不断进步,网络爬虫在获取数据的过程中面临着越来越多的挑战。为了应对这些挑战,HTTP代理成为了网络爬虫不可或缺的一部分。本文将从多个角度详......
  • 为什么网络爬虫广泛使用HTTP代理?
    一、引言网络爬虫作为自动抓取互联网信息的重要工具,在现代社会中发挥着不可或缺的作用。然而随着网络环境的日益复杂,网站反爬虫技术的不断进步,网络爬虫在获取数据的过程中面临着越来越多的挑战。为了应对这些挑战,HTTP代理成为了网络爬虫不可或缺的一部分。本文将从多个角度详......
  • 为什么网络爬虫广泛使用HTTP代理?
    一、引言网络爬虫作为自动抓取互联网信息的重要工具,在现代社会中发挥着不可或缺的作用。然而随着网络环境的日益复杂,网站反爬虫技术的不断进步,网络爬虫在获取数据的过程中面临着越来越多的挑战。为了应对这些挑战,HTTP代理成为了网络爬虫不可或缺的一部分。本文将从多个角度详......
  • 为什么网络爬虫广泛使用HTTP代理?
    一、引言网络爬虫作为自动抓取互联网信息的重要工具,在现代社会中发挥着不可或缺的作用。然而随着网络环境的日益复杂,网站反爬虫技术的不断进步,网络爬虫在获取数据的过程中面临着越来越多的挑战。为了应对这些挑战,HTTP代理成为了网络爬虫不可或缺的一部分。本文将从多个角度详......