我正在使用libxml2编写XML解析器.实际上,我完成了它,但有一个非常讨厌的内存问题.该程序首先从我的数据库中获取一些链接,所有这些链接指向XML文件.我用curl下载它们.这个过程很简单:我下载一个文件,然后解析它,依此类推......
问题似乎是解析完成时.Curl下载下一个文件,但似乎没有释放以前的XML,因为我猜libxml2将它加载到RAM中.在解析最后一个XML时,我发现自己有一个~2.6GB的泄漏(是的,其中一些文件非常大......)我的机器只有4GB的RAM.它目前有效,但将来会有更多链接添加到数据库中,所以我现在必须修复它.
我的代码非常基础:
xmlDocPtr doc;
doc = xmlParseFile("data.xml");
/* code to parse the file... */
xmlFreeDoc(doc);
Run Code Online (Sandbox Code Playgroud)
我试过用:
xmlCleanupParser();
Run Code Online (Sandbox Code Playgroud)
但是医生说:"它不会释放任何与文件相关的记忆." (http://xmlsoft.org/html/libxml-parser.html#xmlCleanupParser)
所以,我的问题是:有人知道如何释放所有这些文件相关的内存吗?