Collections 动态或预先创建集合的权衡

Collections 动态或预先创建集合的权衡,collections,c#-3.0,garbage-collection,Collections,C# 3.0,Garbage Collection,在初始化过程中动态或提前创建集合实例以供以后使用,其利弊是什么 我有一个完整的线程包,每个线程都需要输出一个缓冲区,该缓冲区在优先级队列或intervalheap队列中排队。我想知道,在c#中,是否更有效的方法是事先创建一个大小为2048的X类型的循环缓冲区,然后写入每个缓冲区,稍后再重新使用,或者允许每个线程动态创建一个缓冲区并将其排队,即在必要时创建它们,并根据需要进行正常清理 我知道GC会试图消除预先创建的循环队列。我在过去遇到过奇怪的调试问题,寻找不再存在的对象,因为GC根据删除了它 任

在初始化过程中动态或提前创建集合实例以供以后使用,其利弊是什么

我有一个完整的线程包,每个线程都需要输出一个缓冲区,该缓冲区在优先级队列或intervalheap队列中排队。我想知道,在c#中,是否更有效的方法是事先创建一个大小为2048的X类型的循环缓冲区,然后写入每个缓冲区,稍后再重新使用,或者允许每个线程动态创建一个缓冲区并将其排队,即在必要时创建它们,并根据需要进行正常清理

我知道GC会试图消除预先创建的循环队列。我在过去遇到过奇怪的调试问题,寻找不再存在的对象,因为GC根据删除了它

任何帮助或建议都将不胜感激


Bob。

GC不会删除您仍然有引用的对象-换句话说,如果您能够使用预先创建的缓冲区,它不会被垃圾收集-当然,除非您对它有
WeakReference


您知道这将是一个性能瓶颈吗?为什么不先编写最简单的代码,并衡量它的性能呢?

GC不会删除您仍然有引用的对象-换句话说,如果您能够使用预先创建的缓冲区,它就不会被垃圾收集-当然,除非您对它有
WeakReference


您知道这将是一个性能瓶颈吗?为什么不先编写最简单的代码,然后衡量它的性能呢?

第一点,叶,我知道。第二点,我不知道它是否会成为一个瓶颈,当然,动态创建它的代码会更少。第二点,我不知道它是否会成为瓶颈,当然,动态创建它会减少代码。