对象池与动态分配
回答
破坏对象,取消分配,分配和构造的预期成本高于重新初始化新用途的成本。
我会说“可能很低” - 完全有可能(甚至可能)初始化是昂贵的阶段。 – 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