2010-10-17 57 views
0

我有一個代碼片段,說明了當我的代碼在具有ReaderWriterLockSlim成員變量的類上執行GC.Collect時,代碼中的問題。 GC.Collect需要2到3秒才能運行。我需要定期執行GC,因爲我的應用程序內存密集。ReaderWriterLockSlim和Garbage Collection的速度問題

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

有沒有人有類似的問題?

感謝 伊恩

回答

1

我會問,如果你真的需要爲每個DataItem類的ReaderWriterLockSlim

似乎不好的設計讓我有很多處理浮動。畢竟,這將導致延遲...

0

如果readerwriterlockslim從多個線程中調用,則可能導致內存問題。我相信它會存儲可能導致內存消耗膨脹的線程信息。我會建議試圖找出一個解決方案,你可以減少調用readerwriterlockslim的線程數。