對象池與動態分配
回答
破壞對象,取消分配,分配和構造的預期成本高於重新初始化新用途的成本。
我會說「可能很低」 - 完全有可能(甚至可能)初始化是昂貴的階段。 – 2009-08-09 09:13:18
我改寫了我的答案。閱讀其他答案,似乎我是唯一一個在對象池(其中保存了一個可供使用的構造對象列表)和內存池(這是一種延遲釋放的內存管理技術)有時是毀滅,有時毀滅完全沒有完成 - 所以它是一步完成的)。 – AProgrammer 2009-08-09 09:26:01
我不確定我明白你在這裏說什麼。我一直認爲對象池的好處只是內存重用?所有新對象都需要構建,無論如何都會破壞所有舊對象 - 您無法在那個時間保存? – 2009-08-10 09:40:26
通常,如果您每秒創建並銷燬數千個對象,則至少應該使用對象池。
您可以使用純分配特定大小對象的自定義分配器。重寫新的並預先爲您的對象分配一個堆。使用位域和數組相對簡單。
如果對象很小,基本上自定義堆的內存效率更高(相對於小對象大小,堆開銷相當高);它更快;它可以防止堆碎片;它更容易調試。
是的,這足以支持對象池。
報價Boost文檔
何時應該使用池?
通常使用池時有很多 大量的分配和釋放 的小對象。另一種常見用法 是上面的情況,其中很多對象可能會從內存中丟失。
測量,測量,測量。那麼你會知道,你將不必依賴於猜測或指導。
此外,如果Dirk Grunwald的CustomMalloc仍然可用,請嘗試一下。它綜合了針對單個應用程序的需求而調整的malloc
的實現。
- 1. 對象分配與動態變量
- 2. 動態分配對象
- 3. 動態分配對象
- 4. 動態分配對象
- 5. 動態分配對象內的動態分配
- 6. Haxe Starling對象池與動態對象類型
- 7. 靜態分配與動態分配與自動分配
- 8. 動態分配性質的JS對象
- 9. Java動態列出分配的對象
- 10. 分配動態值到對象
- 11. 動態分配對象的GetElementID
- 12. 動態分配對象2d數組lua
- 13. 如何動態分配對象類型?
- 14. 對象的動態內存分配
- 15. 動態配置分佈式對象
- 16. 訪問對象動態與適配器
- 17. JS:動態對象交叉引用池
- 18. 動態與對象
- 19. React動態渲染組件(對象分配與函數返回)
- 20. 允許只分配對象使用動態分配
- 21. 動態分配no。的值來配對對象
- 22. 創建動態對象到父對象並分配鍵和值?
- 23. Javascript動態分配對象內的對象
- 24. C++模板,分配「靜態」和「動態」對象的問題
- 25. C++模板,分配「靜態」和「動態」對象的問題2
- 26. 全局靜態動態分配對象C++
- 27. LINQ與動態對象
- 28. 動態與對象類型
- 29. 的Javascript:動態與對象
- 30. 屬性與動態對象
像往常一樣 - 這取決於。如果你可以使用對象池,你顯然不需要創建和銷燬東西。所以我們需要更多的細節。 – 2009-08-09 09:14:35