none
DataTable内存无法释放 RRS feed

  • 问题

  • DataTable内存无法释放的问题,如下方法读取了xml的数据到static的DataTable _ReplayDataTable,当我用完_ReplayDataTable后,我_ReplayDataTable.Dispose()无法释放掉内存,=none也不行。而且每读一次xml,内存就增加一次。暂时不考虑用别的方法,就想知道为什么内存无法释放?

    public static DataTable _ReplayDataTable = new DataTable(); 
           public bool ReadToDataTable(string XmlFile)
            {
                DataTable _Dt = new DataTable();
                _Dt.ReadXml(XmlFile);
                _ReplayDataTable = _Dt.Copy();
                _Dt.Dispose();
                return _ReplayDataTable != null && _ReplayDataTable.Rows.Count > 0;
            }


    2019年2月13日 6:30

全部回复

  • 冬日厦语 你好,

    欢迎在MSDN论坛发帖。

    根据你的描述,你想要释放Datatable的资源,你可以尝试调用Dispose方法,并将Datatable的值设置为null。或者直接使用垃圾收集器GC.Collect Method

    Best Regards,

    Wendy


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2019年2月14日 6:12
    版主
  • 您的代码有个Bug,请看这一行

    public static DataTable _ReplayDataTable = new DataTable(); 

    不应该设置为Static静态变量


    ericzhou

    2019年2月15日 4:20
  • 你好,谢谢回复。

    因为这个DataTable读取后需要留着供其他方法调用,持续时间可能很长,比如几个小时这样子,所有就用static

    2019年2月15日 8:14
  • 在ReadToDataTable内部直接用这个变量,但是需要注意线程安全问题,

    ericzhou

    2019年2月17日 1:15