0

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());
        }
    }
}

誰かが同様の問題を抱えていましたか?

ありがとうイアン

4

2 に答える 2

1

ReaderWriterLockSlimDataItemクラスにが本当に必要かどうかお尋ねします。

たくさんのハンドルが浮かんでいるのは、私には悪いデザインのように思えます。結局のところ、それが遅延の原因になります...

于 2011-03-07T17:16:10.240 に答える
0

複数のスレッドから readerwriterlockslim が呼び出されると、メモリの問題が発生する可能性があります。スレッドの情報が保存され、メモリ消費量が膨張する可能性があると思います。リーダーライターロックスリムを呼び出しているスレッドの数を減らすことができる解決策を見つけようとすることをお勧めします。

于 2013-06-05T21:07:12.070 に答える