我读过一些关于一些 64 位 Java VM 实现中的压缩对象指针的内容。据我了解,其原理是将引用存储为从一个对象到另一个对象的相对 32 位地址偏移量,而不是完整的 64 位指针,以获取内存。
我认为这种优化目前还没有应用于.NET CLR。至少我找不到任何相关信息。它是否可能适用于它,或者由于 CLR 内部的工作方式而成为不可能/无用/性能下降的优化?
CLR 目前不使用压缩指针。 CLR 中的收益可能不如 Java 中那么多,因为 .NET 在很大程度上依赖于结构来保持较低的分配量。
.NET 与本机代码以及 4 字节或 8 字节对齐指针的冗余位有很多接口可用于标记固定的对象 https://devblogs.microsoft.com/premier-developer/managed-object-internals-part-1-layout/其他状态标志(请注意,目前尚未像这样实现 - 可能是因为它的实现是兼容性噩梦)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)