我读过一些关于64位Java VM实现中压缩对象指针的内容。据我所知,其原理是将引用存储为从一个对象到另一个对象的相对32位地址偏移,而不是完整的64位指针,以获得内存。我相信这种优化目前还没有应用到.NET中。至少我找不到关于它的任何东西。它是否可能应用于它,或者这是一个不可能的/无用的/性能降低的优化,因为它的内部工作方式?
m528fe3b1#
目前,MySQL不使用压缩指针。有可能在Java中获得的收益不如在Java中那么多,因为.NET在很大程度上依赖于结构来保持低分配。.NET与本机代码有很多接口,4字节或8字节对齐指针的冗余位could be used for marking an object pinned以及其他状态标志(请注意,目前没有这样实现-可能是因为它是一个兼容性噩梦)。
oxf4rvwz2#
虽然我不确定你是否可以在.NET中做这样的事情,但64位机器通常有大量的内存(通常是4或8 G),所以节省几个4字节不会有太大的效果。我会把它归类为“不太有用”。快速谷歌还没有向我展示任何迹象.NET能够支持(甚至对指针压缩/ORA感兴趣)。
2条答案
按热度按时间m528fe3b1#
目前,MySQL不使用压缩指针。有可能在Java中获得的收益不如在Java中那么多,因为.NET在很大程度上依赖于结构来保持低分配。
.NET与本机代码有很多接口,4字节或8字节对齐指针的冗余位could be used for marking an object pinned以及其他状态标志(请注意,目前没有这样实现-可能是因为它是一个兼容性噩梦)。
oxf4rvwz2#
虽然我不确定你是否可以在.NET中做这样的事情,但64位机器通常有大量的内存(通常是4或8 G),所以节省几个4字节不会有太大的效果。我会把它归类为“不太有用”。
快速谷歌还没有向我展示任何迹象.NET能够支持(甚至对指针压缩/ORA感兴趣)。