2010-10-17 59 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的线程数。