首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么用元空间替代永久代?

但从《Java 虚拟机规范》的层面来说,并没有所谓的“永久代”和“元空间”等区域。...那么问题来了,永久代为什么被元空间给替代了?...2.背后的原因 上述给出了移除永久代的回答,但却没有给出背后的原因,那接下来我们就来讨论一下,为什么要移除永久代?以及为什么要有元空间?...但是,当使用元空间替代了永久代之后,出现 OOM 的几率就被大大降低了,因为元空间使用的是本地内存,这样元空间的大小就只和本地内存的大小有关了,从而大大降低了 OOM 的问题。...,不过已经将字符串常量池和静态变量从永久代移到了堆上; JDK 1.8 及以后:无永久代,使用元空间(存放在本地内存中)实现方法区,常量保存在元空间,但字符串常量池和静态变量依然保存在堆中。

93030
您找到你想要的搜索结果了吗?
是的
没有找到

JVM 知识点补充——永久代和元空间

之前已经讲过了不少有关 JVM 的内容,今天准备将之前没有细讲的部分进行补充,比如:永久代和元空间。...永久代是一段连续的内存空间,我们在 JVM 启动之前可以通过设置-XX:MaxPermSize的值来控制永久代的大小,32 位机器默认的永久代的大小为 64M,64 位的机器则为 85M。...元空间空间是 Hotspot 在 JDK8 中新加的内容,其本质和永久代类似,都是对 JVM 规范中方法区的实现。不过元空间永久代之间最大的区别在于: 元空间并不在虚拟机中,而是使用本地内存。...-XX:MaxMetaspaceFreeRatio 在GC之后,最大的Metaspace剩余空间容量的百分比,减少为释放空间所导致的垃圾收集 移除永久代的影响 由于类的元数据分配在本地内存中,元空间的最大可分配空间就是系统可用内存空间...最终用户可以为元空间设置一个可用空间最大值,如果不进行设置,JVM 会自动根据类的元数据大小动态增加元空间的容量。 注意:永久代的移除并不代表自定义的类加载器泄露问题就解决了。

74240

JDK为什么废弃永久代,而引入元空间

那么什么是永久代,什么是元空间呢?...元空间永久代的不同点: 存储位置不同 为什么说存储位置不同呢? 永久代在物理上是堆的一部分,和新生代、老年代的地址是连续的,而元空间属于本地内存。...现在类的元信息存储在元空间中,静态变量和常量池等并入堆中,相当于原来的永久代中的数据,被元空间和堆内存给瓜分了。 为什么要废弃永久代,而使用元空间来进行替换呢?...这时候我们就有了新的问题,为什么要废弃永久代,而使用元空间来进行替换呢? 首先我们得知道,在原来的永久代划分中,永久代需要存放类的元数据、静态变量和常量等。...既然都已经要替换,那么一定是废除永久代是对 JVM 来说,肯定是好处多多的。 废除永久代的好处 由于类的元数据分配在本地内存中,元空间的最大可分配空间就是系统可用内存空间

39230

DaisyDisk for Mac 永久版:清理您的Mac,释放空间

DaisyDisk for Mac是一款功能强大的硬盘空间管理软件,可以帮助Mac电脑用户清理出硬盘上的大型文件,进一步释放硬盘空间,充分发挥硬件设备的性能,使Mac电脑焕发出新的生机。...只需几次点击,用户就能快速扫描任何磁盘、文件夹或ATV在Mac电脑上的任何外部设备,找出占用大量空间的文件和文件夹。...这样,他们就可以快速清理出硬盘空间,进一步优化Mac电脑的性能,使序列变得更快、更流畅。...3.自动警告:当磁盘空间即将满时,DaisyDisk会发出警告,提醒用户及时清理未使用的文件和文件夹,并保持充足的磁盘空间。...图片总之,DaisyDisk为Mac电脑用户提供了一种简单、快速的方法来管理他们电脑硬盘空间。它提供了交互式界面和多种扫描选项,让用户可以找到和删除他们不需要和磁盘空间占用较大的文件和文件夹。

48150

Java8内存模型—永久代(PermGen)和元空间(Metaspace)

三、Metaspace(元空间)   其实,移除永久代的工作从JDK1.7就开始了。JDK1.7中,存储在永久代的部分数据就已经转移到了Java Heap或者是 Native Heap。...因此,可以大致验证 JDK 1.7 和 1.8 将字符串常量由永久代转移到堆中,并且 JDK 1.8 中已经不存在永久代的结论。现在我们看看元空间到底是一个什么东西?   ...元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。...输出结果如下: 从输出结果,我们可以看出,这次不再出现永久代溢出,而是出现了元空间的溢出。...四、总结 通过上面分析,大家应该大致了解了 JVM 的内存划分,也清楚了 JDK 8 中永久代向元空间的转换。不过大家应该都有一个疑问,就是为什么要做这个转换?

31600

永久代?元空间

---- 【元空间】(JDK8及之后) -XX:MaxMetaspaceSize 设置元空间默认初始大小,默认为20.75MB。...例如:-XX:MaxMetaspaceSize=40m 在Java8中,永久代已经被移除,被一个称为“元数据区”(元空间)的区域所取代。...元空间的本质和永久代类似,元空间永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用堆外的直接内存。 因此,与永久代不同,如果不指定大小,默认情况下,虚拟机会耗尽所有的可用系统内存。...---- 【为什么使用元空间替换永久代?】 表面上看是为了避免OOM异常。...当使用元空间时,可以加载多少类的元数据就不再由MaxPermSize控制, 而由系统的实际可用空间来控制。

32210

Java8内存模型—永久代(PermGen)和元空间(Metaspace)

三、Metaspace(元空间) 其实,移除永久代的工作从JDK1.7就开始了。JDK1.7中,存储在永久代的部分数据就已经转移到了Java Heap或者是 Native Heap。...因此,可以大致验证 JDK 1.7 和 1.8 将字符串常量由永久代转移到堆中,并且 JDK 1.8 中已经不存在永久代的结论。现在我们看看元空间到底是一个什么东西?...元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。...输出结果如下: 从输出结果,我们可以看出,这次不再出现永久代溢出,而是出现了元空间的溢出。...四、总结 通过上面分析,大家应该大致了解了 JVM 的内存划分,也清楚了 JDK 8 中永久代向元空间的转换。不过大家应该都有一个疑问,就是为什么要做这个转换?

1.3K20

Java8内存模型—永久代(PermGen)和元空间(Metaspace)

三、Metaspace(元空间)   其实,移除永久代的工作从JDK1.7就开始了。JDK1.7中,存储在永久代的部分数据就已经转移到了Java Heap或者是 Native Heap。...因此,可以大致验证 JDK 1.7 和 1.8 将字符串常量由永久代转移到堆中,并且 JDK 1.8 中已经不存在永久代的结论。现在我们看看元空间到底是一个什么东西?   ...元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。...从输出结果,我们可以看出,这次不再出现永久代溢出,而是出现了元空间的溢出。 四、总结 通过上面分析,大家应该大致了解了 JVM 的内存划分,也清楚了 JDK 8 中永久代向元空间的转换。...2、类及方法的信息等比较难确定其大小,因此对于永久代的大小指定比较困难,太小容易出现永久代溢出,太大则容易导致老年代溢出。   3、永久代会为 GC 带来不必要的复杂度,并且回收效率偏低。

48420

JDK1.8为什么使用元空间代替了永久

JDK 1.8中元空间的引入 在JDK 1.8中,元空间(Metaspace)被引入作为替代永久代(PermGen,Permanent Generation)的一部分内存模型的改变。...这样做的好处是元空间可以动态地根据应用程序的需求扩展大小,而不需要像永久代那样设置一个固定的大小。这种方式更加灵活,可以减少因为永久代大小不当设置导致的内存错误。 4....性能优化 使用元空间代替永久代还有助于性能优化。因为元空间是基于本地内存的,它的扩展通常比永久代更快,且不受JVM堆大小的限制。这意味着元空间可以更快地响应类加载的需求。 5....与HotSpot JVM的兼容性 Oracle希望通过引入元空间,简化HotSpot JVM的维护和开发,因为这样可以移除与永久代相关的代码,使得JVM的内存管理更加简洁。...结论 总的来说,「元空间」的引入是为了解决永久代固有的一些问题,如内存空间限制、垃圾收集的复杂性以及性能问题。通过使用元空间,JVM的内存管理变得更加灵活和高效,同时简化了JVM的维护工作。

14510

面试官,Java8 JVM内存结构变了,永久代到元空间

空间(Metaspace) 对于Java8,HotSpots取消了永久代,那么是不是就没有方法区了呢?当然不是,方法区只是一个规范,只不过它的实现变了。...在Java8中,元空间(Metaspace)登上舞台,方法区存在于元空间(Metaspace)。同时,元空间不再与堆连续,而且是存在于本地内存(Native memory)。 ?...元空间存在于本地内存,意味着只要本地内存足够,它不会出现像永久代中“java.lang.OutOfMemoryError: PermGen space”这种错误。看上图中的方法区,是不是“膨胀”了。...永久代为什么被替换了 思考一下,为什么使用元空间替换永久代? 表面上看是为了避免OOM异常。...原文链接:《面试官,Java8 JVM内存结构变了,永久代到元空间》 《面试官》系列文章: 《JVM之内存结构详解》 《面试官,不要再问我“Java GC垃圾回收机制”了》

1K60

阿里云二面:JVM 方法区和元空间什么关系?为什么要将永久代替换为元空间

方法区和永久代以及元空间有什么关系?...方法区和永久代以及元空间的关系很像 Java 中接口和类的关系,类实现了接口,这里的类就可以看作是永久代和元空间,接口可以看作是方法区,也就是说永久代以及元空间是 HotSpot 虚拟机对虚拟机规范中方法区的两种实现方式...JDK 1.8 的时候,方法区(HotSpot 的永久代)被彻底移除了(JDK1.7 就已经开始了),取而代之是元空间,元空间使用的是直接内存。...为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace) 呢?...JDK1.8 HotSpot 移除了永久代用元空间(Metaspace)取而代之, 这时候字符串常量池和静态变量还在堆, 运行时常量池还在方法区, 只不过方法区的实现从永久代变成了元空间(Metaspace

74820

Viper FTP ,强大的ftp上传工具

Viper FTP 是一款强大的ftp上传工具,具有简洁的用户界面,强大的功能,用户使用更方便。而且它允许用户通过邮件应用程序共享项目,使特定文件的HTTP URL,并迅速比较文件和文件夹。...id=ODE3NDU1Jl8mMjcuMTg3LjIyNC4yMDA%3D1、传输协议Viper FTP支持所有流行的文件传输协议,包括FTP,SFTP,带TLS / SSL(FTps)的FTP,WebDav...2、历史记录Viper FTP监控您所做的一切,并在历史记录中保留记录。...通过FTP为您的个人,工作和社交上传服务器添加书签。Viper FTP提供群组,最近的连接和收藏夹管理,让您的生活更有条理。6、文件查找快速找到一切。...立即在计算机和远程FTP服务器上搜索文件和信息。7、文件编辑使用任何编辑器编辑远程文件,更改自动保存回服务器8、文件比较使用Viper FTP使文件比较任务更容易。

2.2K20

白嫖永久35G 的支持 WebDav 协议的 InfiniCloud 网盘空间

2023 年 4 月 3 日改名为 InfiniCLOUD 还推出新注册用户即可免费获得 20GB 永久初始容量活动,另外输入注册码可额外获得 5GB 永久容量。...配合新活动还可领取一年 15GB 空间,可以实现 40GB 的空间,比坚果付费的专业版还厚道!...FWB9X二、卡 Bug 获取额外 20GB 永久容量老用户通过邮件邀请可获得 10G 永久空间的升级,有个 bug 可以将(jp,en)语言的两个链接各领取一次,共 20GB 永久容量加上初始 10GB...+5GB 推荐码,老用户一共可获得 35GB 永久容量。...https://infini-cloud.net/en/modules/bonus/code=202304_10GB_en/userid=你的用户名三、一年 15GB 容量获取方法网站首页往下翻有 15GB 空间赠送活动

2K20

ftp 命令详解_ftp连接命令

1、ftp> ! 从ftp子系统退出到外壳 2、ftp> ? 显示ftp命令说明,与help相同 格式:?...如果自动登录打开(默认),ftp 还将尝试自动将用户登录到 FTP 服务器port 指定用来联系 FTP 服务器的端口号。 26.FTP >prompt 切换提示。...28.FTP >pwd 显示远程计算机上的当前目录。 29.FTP >quit 结束与远程计算机的 FTP 会话并退出 ftp。 30.FTP >quote 将参数逐字发送到远程 FTP 服务器。...36.FTP >status 显示 FTP 连接和切换的当前状态。 37.FTP >trace 切换数据包跟踪。Trace 在运行 ftp 命令时显示每个数据包的路由。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

8.6K20

面试官,Java8中JVM内存结构变了,永久代到元空间

空间(Metaspace) 对于Java8,HotSpots取消了永久代,那么是不是就没有方法区了呢?当然不是,方法区只是一个规范,只不过它的实现变了。...在Java8中,元空间(Metaspace)登上舞台,方法区存在于元空间(Metaspace)。同时,元空间不再与堆连续,而且是存在于本地内存(Native memory)。 ?...元空间存在于本地内存,意味着只要本地内存足够,它不会出现像永久代中“java.lang.OutOfMemoryError: PermGen space”这种错误。看上图中的方法区,是不是“膨胀”了。...永久代为什么被替换了 思考一下,为什么使用元空间替换永久代? 表面上看是为了避免OOM异常。...当使用元空间时,可以加载多少类的元数据就不再由MaxPermSize控制, 而由系统的实际可用空间来控制。

1.4K20
领券