我有一段代码示例,说明了在具有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());
}
}
}
有没有人有类似的问题?
由于 伊恩
答案 0 :(得分:1)
我会问你的每个ReaderWriterLockSlim
课程是否真的需要DataItem
?
对于我而言,设计糟糕的设计似乎很糟糕。毕竟,这将导致延迟......
答案 1 :(得分:0)
如果从多个线程调用readerwriterlockslim,可能会导致内存问题。我相信它会存储线程的一些信息,这些信息会导致内存消耗膨胀。我建议尝试找出一个解决方案,你可以减少调用readerwriterlockslim的线程数。