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类的运用没有关系呢?
xd.Load(@"c:\testxml.xml");
//.....(other operations).....
//when necessary, use following codes:
xd.Save(@"c:\testxml.xml");
以上代码段在一个程序中,程序多次动态地打开一个xml文件,修改后回存。在运行时,发现该进程的句柄数在进程管理器里持续上升,而且好像每增加一个句柄计数,相应的内存占用数也上升8k。
我想问,在XmlDocument类的load方法里面,会不会象流的原理一样,得到一个文件handle呢?如果是,那么我该如何释放这个handle呢?如果不是,那么我程序运行时出现的问题是不是就和XmlDocument类的运用没有关系呢?
我认为 xd = null; 这个语句的效果是不是等同于在函数中new出对象,XmlDocument xd = new XmlDocument(); 然后在该函数结束时是否把xd置成null是不是已经无关紧要了呢?我的这段代码确实是在一个函数中的,所以我觉得可能xd = null;不能起到作用啊。而且,如果真的有文件句柄从操作系统获得的话,光把引用置空也是不能释放这个句柄的。就像流对象一样,一般都会有一个close方法用来显式地释放handle,然而XmlDocument类并没有这种方法,所以我很想知道XmlDocument类是不是真的涉及到句柄的获得。
//修改节点的值...
xd.Save(xw);
xw.Close();