【发布时间】:2014-01-08 18:41:19
【问题描述】:
现在我开始研究大量使用缓冲区的典型应用程序。我很惊讶我找不到关于这个主题的清晰指南。
我有几个问题。
1) 我什么时候更喜欢在非托管堆内存中使用缓冲区而不是托管内存? 我知道.net 上的对象分配比非托管堆上的更快,并且由于 GC 开销,.net 上的对象销毁要昂贵得多,所以我认为使用非托管会快一点。我什么时候应该使用 fixed{} 以及 Marshal.AllocHGlobal() 什么时候?
2) 据我了解,如果缓冲区可能在一段时间后(基于用户操作)被重用,那么对 .net 中的托管和非托管缓冲区使用周参考会更有效,不是吗?
【问题讨论】: