5
A
回答
1
你永远无法在Java中做到这一点。
即使您使用sun.misc.Unsafe
以访问对象的真实地址,并即使您使用垃圾收集器不会左右移动的对象(并发标记扫不动的物体,我相信,因为它是“非压缩的”),你有一个更大的问题:通过将prev
和next
对象引用一起整数化,垃圾收集器不会意识到它们是对象引用。所以它会认为被引用的对象是未引用的,因此会将所有的列表节点收集为垃圾。
如果您需要保存内存,请使用基于数组的列表而不是链接列表。
3
因为你引用的理由,我不认为你可以(至少不要使用你的“下一个”和“前一个”指针的对象引用):对象地址是官方不透明的。虽然我们可能访问引用的位,JVM可以在内存中移动对象(例如,当进行内存管理时),虽然我没有立即找到它的规范引用,但我相信它可以处理通过修改对象引用值(逐字地去和更新每个字段,以及旧引用所在的位置,给它新的引用)。因此,如果我们将对象引用转换为long
(例如),然后将另一个对象引用转换为long
,如果其中一个对象移动(如同它们所能做的那样),一旦这些对象之一被XOR返回并且转换回对象引用,它可能不再有效。因此,我认为你需要为指针使用除对象引用之外的其他东西,例如索引到一个大对象引用数组中,在这一点上,我相当肯定你已经失去了内存中的好处。 XOR链接列表。
相关问题
- 1. 我们可以使用继承来实现链表吗?
- 2. 我们可以在jsp中实现一个接口吗?
- 3. 我们可以在ZF2中实现没有php_memcached.dll的memcache吗?
- 4. 我们可以在c#中使用接口实现多态吗?
- 5. 我们可以使用xcode在Facebook中实现autoshare吗?
- 6. 我们可以在linux中实现C++ thunk吗?
- 7. 我们可以在struct中实现多态吗?
- 8. 我们可以避免在java中实习字符串吗?
- 9. 我们可以在JavaFX中实现我们自己的材料吗?
- 10. 我可以在纯Java中实现park/unpark方法吗?
- 11. 我可以在Java中使用Semaphore实现阻塞队列吗?
- 12. 我们可以在FM上实现静态选择'ALL'吗?
- 13. 我们可以代表Java(或Kotlin)中的“自我类”吗?
- 14. 有人可以解释我在Java中使用链接列表堆栈的以下实现吗?
- 15. 链表实现java
- 16. 我可以在Raphael实体中呈现HTML表单吗?
- 17. 现在我们可以在DjEng中使用GAE中的ORM吗?
- 18. 我可以使用从Java实现java接口的scala类吗?
- 19. 在OS X 10.10中,我可以在没有NSCell的情况下实现NSControl吗?
- 20. 在java中实现一个链表在
- 21. 我们可以改变一个函数的实现吗?
- 22. Java:我们可以使用DAO作为单例实例吗?
- 23. 我们可以使用Angular Material v1.x和Angular Js 2.x吗?
- 24. 我们可以在Java中的函数中调用函数吗?
- 25. 在java中实现链接列表
- 26. java - 我们可以做我们自己的内存管理吗?
- 27. 我们可以在多个源文件中实现一个对象吗?
- 28. 我们可以在本机iPhone应用程序中实现openID选项吗?
- 29. 我们可以在目标c中使用接口和实现文件吗?
- 30. 我们可以检查NSNotification表吗?
任何事情都有可能。请澄清:我知道XOR是什么;我知道链表。什么是XOR链接列表?没有我知道的AND或NOT链接列表。 – duffymo
@duffymo https://en.wikipedia.org/wiki/XOR_linked_list –
找到它了:https://en.wikipedia.org/wiki/XOR_linked_list。从来没有听说过这样的事情。我敢打赌你可以用任何语言来实现它。 – duffymo