Java虚拟机是否会移动内存中的对象?如果是这样,它如何处理对已移动对象的引用更新?
我提出这个问题是因为我正在探索一种分布式存储对象的想法(即跨多台服务器),但出于效率原因,我需要能够在服务器之间移动对象。对象需要能够包含对彼此的指针,甚至是对远程服务器上的对象的指针。我正试图思考更新已移动对象的引用的最佳方法。
到目前为止,我的两个想法是:
- 维护一个引用间接存储,该存储在对象的生命周期内不会移动,并且在对象移动时进行更新。但是,这些间接存储如何管理呢?
- 在每个对象中保留反向引用列表,以便我们知道如果对象被移动,需要更新什么。当然,这会带来性能开销。
我希望听取有关这些方法的反馈,以及任何替代方法的建议。