假设有两个线程,它们通过彼此异步发送数据消息进行通信。每个线程都有某种消息队列。
我的问题很低:可以期望什么是管理内存的最有效方法?我可以想到几种解决方案:
- 发件人通过创建对象
new
。接听电话delete
。 - 内存池(用于将内存传输回发送方)
- 垃圾收集(例如Boehm GC)
- (如果对象足够小)按值复制以避免完全分配堆
1)是最明显的解决方案,因此我将其用于原型。很有可能它已经足够好了。但是与我的特定问题无关,我想知道如果要针对性能进行优化,哪种技术最有前途。
我希望从理论上讲池化是最好的,尤其是因为您可以使用有关线程之间信息流的更多知识。但是,我担心这也是最难解决的问题。很多调整... :-(
此后,垃圾收集应该很容易添加(在解决方案1之后),我希望它表现的很好。因此,我想如果1)效率太低,这是最实用的解决方案。
如果对象又小又简单,则按值复制可能是最快的。但是,我担心这会在受支持的消息的实施方面造成不必要的限制,因此我想避免这种情况。