ReaderWriterLockSlim和垃圾收集速度问题

时间:2010-10-17 20:33:34

标签: garbage-collection readerwriterlockslim

我有一段代码示例,说明了在具有ReaderWriterLockSlim成员变量的类上执行GC.Collect时我的代码中的问题。 GC.Collect需要2到3秒才能运行。我需要定期执行GC,因为我的应用程序非常耗费内存。

namespace WpfApplication12
{
    public class DataItem
    {
        private readonly ReaderWriterLockSlim m_propertyLock = new ReaderWriterLockSlim();

        public DataItem()
        {
        }
    }

    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();

            List<DataItem> dataItemList = new List<DataItem>();
            for (int i = 0; i < 100000; i++)
            {
                dataItemList.Add(new DataItem());
            }

            Debug.WriteLine(DateTime.Now.ToString());
            GC.Collect();
            Debug.WriteLine(DateTime.Now.ToString());
        }
    }
}

有没有人有类似的问题?

由于 伊恩

2 个答案:

答案 0 :(得分:1)

我会问你的每个ReaderWriterLockSlim课程是否真的需要DataItem

对于我而言,设计糟糕的设计似乎很糟糕。毕竟,这将导致延迟......

答案 1 :(得分:0)

如果从多个线程调用readerwriterlockslim,可能会导致内存问题。我相信它会存储线程的一些信息,这些信息会导致内存消耗膨胀。我建议尝试找出一个解决方案,你可以减少调用readerwriterlockslim的线程数。