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