gpt4 book ai didi

java - 压缩的 ooP 是如何在 JVM 中实现的?

转载 作者:行者123 更新时间:2023-12-02 04:24:44 25 4
gpt4 key购买 nike

谷歌的快速搜索令人惊讶地没有结果。

我的问题如下:

对于 32 位架构 - 2^32 字节将是内存空间 = 4GB因此,对于 4 GB 的 Java 堆,我们需要一个大小为 32 位 = 4 字节的指针。

但是,通过压缩 oop 的概念,JVM 仍然可以使用 4 字节指针,最大堆大小为 32 GB。

想想看,32 GB = 4 GB * 2^3。这意味着我们实际上还需要 3 个位,但不知何故,这些位在存储/访问期间由 JVM 编码/解码。

我发现这些页面无法访问:http://wikis.sun.com/display/HotSpotInternals/CompressedOops https://wikis.oracle.com/display/HotSpotInternals/CompressedOops

有人可以向我解释一下幕后发生的魔法吗?

致 Mods:我发现了一个现有问题,但这指向 https://wikis.oracle.com/display/HotSpotInternals/CompressedOops 。这个维基已经不存在了,你能允许这个问题持续很长的时间,以便有人向我指出另一个替代的深入链接吗?请。

编辑:

@Markus Mikkolainen 的回应是我发现的最简单、最简单的解释:它们是偏移量,用于索引 8 字节 block 而不是 1 字节 block ,因为对象是 8 字节对齐的。

最佳答案

http://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html#compressedOop

这是否回答了你的问题,它们是偏移量,它们用于索引 8 字节 block 而不是 1 字节 block ,因为对象是 8 字节对齐的。

关于java - 压缩的 ooP 是如何在 JVM 中实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32337632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com