首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Hotspot JVM中,为什么CDS需要压缩Oops?

在Hotspot JVM中,为什么CDS需要压缩Oops?
EN

Stack Overflow用户
提问于 2021-10-06 01:34:18
回答 1查看 96关注 0票数 1

我读过这篇文章"https://malloc.se/blog/zgc-jdk15",而最后一个索引是关于Class Data Sharing的。

此特性(意味着CDS)仅在启用压缩Oops功能(-XX:+UseCompressedOops)时才能工作。

我知道CDS和压缩Oops一点,但我不能理解他们之间的关系。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-06 02:27:51

CDS (类数据共享)不需要压缩OOPs。但是,在JDK 15之前,它只在默认配置( UseCompressedOops=trueUseCompressedClassPointers=true )中工作。

问题和解决方案在JDK-8232069中进行了描述。

要使CDS存档有效,UseCompressedOopsUseCompressedClassPointers的运行时值必须与归档生成期间使用的值相匹配。在JDK-8232069之前,这些值没有保存在归档文件中,JVM假定打开了压缩的OOPs (默认)。因此,CDS与ZGC不兼容,因为ZGC需要关闭压缩OOPs。

为了使CDS与ZGC兼容,JDK-8232069将UseCompressedOopsUseCompressedClassPointers的值写入存档,并在JVM启动时检查当前标志是否与保存的值匹配。因此,现在(从JDK 15开始) CDS可以使用任何一种压缩OOPs配置,现在它与ZGC兼容。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69458900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档