0

当 GC.Collect 在具有 ReaderWriterLockSlim 成员变量的类上执行时,我有一段示例代码说明了我的代码中的问题。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());
        }
    }
}

有没有人遇到过类似的问题?

谢谢伊恩

4

2 回答 2

1

我会问你是否真的需要ReaderWriterLockSlim为你的每个DataItem班级提供一个?

对我来说,让这么多手柄漂浮在我看来是糟糕的设计。毕竟,这就是导致延迟的原因......

于 2011-03-07T17:16:10.240 回答
0

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

于 2013-06-05T21:07:12.070 回答