当前位置: 首页 > 知识库问答 >
问题:

Java 32bit与64bit优化模式(-xx:-useCompressedoops)内存开销

晁璞
2023-03-14

我预计在将Xmx参数从32GB重新配置为64GB之后,内存中保留的“有用”对象的数量将会有很大的内存开销。

我试图通过在运行小堆(8GB)的本地计算机上应用-xx:-usercompressedops来模拟和估计差异,但还不能得出结论。根据运行时计算,在这两种情况下,我的对象占用的内存是相同的。使用的堆关闭了优化,往往会多一点,但绝不会多两倍,正如我可以预期的那样,阅读了一些解释。

在我的用例中,我只是在程序的整个生命周期中保持大量相对较大的POJO对象,每个对象在堆中为100-1K。

是否有一个经验法则来说明内存需求是如何通过越过32GB限制而增长的(当32bit优化不再适用时)?

共有1个答案

酆高翰
2023-03-14

但绝不会像我所期望的那样,读到一些解释。

我的理解是,禁用CompressedOops只会使指针大小(引用类型)加倍,而不会使基元类型加倍,尤其不会使字符串、字节数组等加倍。因此,如果您的堆由基元类型的数组支配,那么增加可能很难注意到。

对齐要求还使大小差异不是直接的,因为较大的指针可能只是填充一些对齐填充。

 类似资料:
  • 问题内容: Python可以在优化模式(-O)下运行脚本,该脚本可以关闭诸如assert之类的调试,并且如果我记得还可以删除文档字符串。我没有看到它真正使用过,也许这只是过去时代的产物。正在使用吗?做什么的? 为什么在Python 3中没有删除这个无用的东西? 问题答案: 如果您分发仅包含文件的任何存档形式,它将节省少量内存和少量磁盘空间。(如果您使用很多,并且可能在复杂的条件下使用,那么节省下来

  • 问题内容: 我需要优化应用程序的RAM使用率。 请避免让我的讲座告诉我在编写Python时我不关心内存。我有一个内存问题,因为我使用了很大的默认字典(是的,我也想很快)。我当前的内存消耗为350MB,并且还在不断增长。我已经不能使用共享主机了,如果我的Apache打开更多进程,内存将增加两倍和三倍……这很昂贵。 我已经进行了 广泛的分析, 而且我确切地知道了问题所在。 我有几个带有Unicode键

  • 不是内存泄漏或类似的问题,因为第一次连接后内存使用量不会增加,所以优化可能是加载更少的模块或做一些不同的事情...

  • 导出 - 固定内存模式

  • 本文向大家介绍总结Android App内存优化之图片优化,包括了总结Android App内存优化之图片优化的使用技巧和注意事项,需要的朋友参考一下 前言 在Android设备内存动不动就上G的情况下,的确没有必要去太在意APP对Android系统内存的消耗,但在实际工作中我做的是教育类的小学APP,APP中的按钮、背景、动画变换基本上全是图片,在2K屏上(分辨率2048*1536)一张背景图片

  • 本文向大家介绍Redis 如何做内存优化?相关面试题,主要包含被问及Redis 如何做内存优化?时的应答技巧和注意事项,需要的朋友参考一下 尽量使用 Redis 的散列表,把相关的信息放到散列表里面存储,而不是把每个字段单独存储,这样可以有效的减少内存使用。比如将 Web 系统的用户对象,应该放到散列表里面再整体存储到 Redis,而不是把用户的姓名、年龄、密码、邮箱等字段分别设置 key 进行存