XmlDocument xd = new XmlDocument();
  xd.Load(@"c:\testxml.xml");
  //.....(other operations).....
  //when necessary, use following codes:
  xd.Save(@"c:\testxml.xml");
  以上代码段在一个程序中,程序多次动态地打开一个xml文件,修改后回存。在运行时,发现该进程的句柄数在进程管理器里持续上升,而且好像每增加一个句柄计数,相应的内存占用数也上升8k。
  我想问,在XmlDocument类的load方法里面,会不会象流的原理一样,得到一个文件handle呢?如果是,那么我该如何释放这个handle呢?如果不是,那么我程序运行时出现的问题是不是就和XmlDocument类的运用没有关系呢?

解决方案 »

  1.   

    对net_lover:
      我认为 xd = null; 这个语句的效果是不是等同于在函数中new出对象,XmlDocument xd = new XmlDocument(); 然后在该函数结束时是否把xd置成null是不是已经无关紧要了呢?我的这段代码确实是在一个函数中的,所以我觉得可能xd = null;不能起到作用啊。而且,如果真的有文件句柄从操作系统获得的话,光把引用置空也是不能释放这个句柄的。就像流对象一样,一般都会有一个close方法用来显式地释放handle,然而XmlDocument类并没有这种方法,所以我很想知道XmlDocument类是不是真的涉及到句柄的获得。
      

  2.   

    XmlTextWriter xw = new XmlTextWriter(@"c:\testxml.xml", null);
    //修改节点的值...
    xd.Save(xw);
    xw.Close();