大小和内存使用情况

时间:2018-08-01 11:20:50

标签: c++ xml xml-parsing xerces-c

我正在linux平台上使用xerces 2.8.0。对于每个xml文件(非常大的文件)的解析,我都能看到大量的内存增加。

下面是示例代码

#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/parsers/XercesDOMParser.hpp>
#include <xercesc/dom/DOM.hpp>
#include <xercesc/util/XMLString.hpp>
#include <xercesc/util/PlatformUtils.hpp>

using namespace xercesc;

class ParseWrite
     {
       XercesDOMParser* parser;
       DOMDocument * pDoc;

       public:
              ParseWrite()
                {
                  try
                    {
                      XMLPlatformUtils::Initialize();
                    } catch(...)
                    {
                    }

                  parser = new XercesDOMParser();
                  parser->setValidationScheme(XercesDOMParser::Val_Never);
                  parser->setDoNamespaces(false);
                  parser->setDoSchema(false);
                  parser->setValidationSchemaFullChecking(false);
                  parser->setLoadExternalDTD(false);
                  pDoc = 0;
                 }

         ~ParseWrite()
            {
             delete parser;
             XMLPlatformUtils::Terminate();
            }

         int Parse(const char * infile)
           {
             parser->parse(infile);
             pDoc = parser->getDocument();

            //Traversing code here

             parser->resetDocumentPool();
             return 0;
           }
        }; 

ParseWrite Parser;

int main(int argc,char** argv)
     {
     if(argc < 2)//check atleast 1 file is passed
          return 0;

     for(int i = 1; i < argc; i++)
         {
          Parser.Parse(argv[i]);
          sleep(10);
          somefun();
          someotherfun();
         }

     //some other code blocks

     return 0;
     }

注意: 在每个文件解析后调用sleep()来检查是否释放了内存。是否可以在下一次解析开始之前释放内存?

0 个答案:

没有答案