Проблемы со скоростью с ReaderWriterLockSlim и сборкой мусора - PullRequest
0 голосов
/ 18 октября 2010

У меня есть пример кода, который иллюстрирует проблемы в моем коде, когда GC.Collect выполняется для класса, имеющего переменную-член ReaderWriterLockSlim. Сбор GC.Collect занимает от 2 до 3 секунд. Мне необходимо проводить ГХ через регулярные промежутки времени, потому что мое приложение чрезвычайно интенсивно использует память.

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

У кого-нибудь были подобные проблемы?

Спасибо Ian

Ответы [ 2 ]

1 голос
/ 07 марта 2011

Я бы спросил, действительно ли вам нужен ReaderWriterLockSlim для каждого из ваших DataItem классов?

Мне кажется плохим замыслом иметь столько парящих ручек. В конце концов, именно это и будет причиной задержки ...

0 голосов
/ 06 июня 2013

Проблема с памятью может быть вызвана, если readerwriterlockslim вызывается из нескольких потоков.Я полагаю, что он будет хранить некоторую информацию о потоках, которые могут вызвать увеличение объема памяти.Я бы порекомендовал попытаться найти решение, в котором вы можете уменьшить количество потоков, вызывающих readerwriterlockslim.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...