Let me try here once more to see if anybody can help.

I have a program that in an infinite loop creates a parser, parses an
xml file and deletes the parser, and so on.  The swap space for this
simple program keeps increasing (look at the SZ column from ps -ael
below) which suggests that the resources used are not getting released.
If the memory was getting freed properly the SZ should stabilize.  At
the beginning of the loop I create a DOMParser and parse an xml file.
At the end I "delete" the parser.  I cannot see why the resources are
not getting released and reused.  I am using AIX4.3.3.


"SZ"
  200001 A     5490  66820 129302   6  63 20 371da   628 320a3718
pts/59  0:00 a.out
  200001 A     5490  66820 129302   6  63 20 371da   636 320a3718
pts/59  0:00 a.out
  200001 A     5490  66820 129302  11  65 20 371da   644 320a3718
pts/59  0:00 a.out
  200001 A     5490  66820 129302   5  62 20 371da   652 320a3718
pts/59  0:00 a.out
  200001 A     5490  66820 129302  12  66 20 371da   660 320a3718
pts/59  0:00 a.out
  200001 A     5490  66820 129302   6  63 20 371da   664 320a3718
pts/59  0:00 a.out
  200001 A     5490  66820 129302  12  66 20 371da   672 320a3718
pts/59  0:01 a.out
  200001 A     5490  66820 129302   6  63 20 371da   676 320a3718
pts/59  0:01 a.out
  200001 A     5490  66820 129302   6  63 20 371da   684 320a3718
pts/59  0:01 a.out
  200001 A     5490  66820 129302  11  65 20 371da   692 320a3718
pts/59  0:01 a.out
  200001 A     5490  66820 129302  12  66 20 371da   696 320a3718
pts/59  0:01 a.out
  200001 A     5490  66820 129302  10  65 20 371da   696
pts/59  0:01 a.out
  200001 A     5490  66820 129302   6  63 20 371da   704 320a3718
pts/59  0:01 a.out
  200001 A     5490  66820 129302   6  63 20 371da   708 320a3718
pts/59  0:02 a.out
  200001 A     5490  66820 129302   6  63 20 371da   712 320a3718
pts/59  0:02 a.out
  200001 A     5490  66820 129302  10  65 20 371da   716 320a3718
pts/59  0:02 a.out
  200001 A     5490  66820 129302   6  63 20 371da   720 320a3718
pts/59  0:02 a.out
  200001 A     5490  66820 129302  12  66 20 371da   724 320a3718
pts/59  0:02 a.out
  200001 A     5490  66820 129302   6  63 20 371da   724 320a3718
pts/59  0:02 a.out
  200001 A     5490  66820 129302  12  66 20 371da   732 320a3718
pts/59  0:02 a.out
  200001 A     5490  66820 129302   6  63 20 371da   732 320a3718
pts/59  0:03 a.out
  200001 A     5490  66820 129302   7  63 20 371da   736 320a3718
pts/59  0:03 a.out
  200001 A     5490  66820 129302  11  65 20 371da   740 320a3718
pts/59  0:03 a.out
  200001 A     5490  66820 129302  12  66 20 371da   744 320a3718
pts/59  0:03 a.out
  200001 A     5490  66820 129302   9  64 20 371da   748
pts/59  0:03 a.out
  200001 A     5490  66820 129302  12  66 20 371da   752 320a3718
pts/59  0:03 a.out
  200001 A     5490  66820 129302   6  63 20 371da   752 320a3718
pts/59  0:03 a.out
  200001 A     5490  66820 129302   6  63 20 371da   756 320a3718
pts/59  0:04 a.out
  200001 A     5490  66820 129302   8  64 20 371da   760 320a3718
pts/59  0:04 a.out
  200001 A     5490  66820 129302   5  62 20 371da   764 320a3718
pts/59  0:04 a.out
  200001 A     5490  66820 129302  12  66 20 371da   768 320a3718
pts/59  0:04 a.out
  200001 A     5490  66820 129302   6  63 20 371da   772 320a3718
pts/59  0:04 a.out
  200001 A     5490  66820 129302  12  66 20 371da   772 320a3718
pts/59  0:04 a.out
  200001 A     5490  66820 129302   6  63 20 371da   776 320a3718
pts/59  0:04 a.out
  200001 A     5490  66820 129302   6  63 20 371da   780 31638298
pts/59  0:04 a.out
  200001 A     5490  66820 129302  11  65 20 371da   784 31638298
pts/59  0:05 a.out
  200001 A     5490  66820 129302  11  65 20 371da   788 31638298
pts/59  0:05 a.out

int
main( int ac, char* av[] )
{
     DOMParser *parser;

     if ( ac != 2 ){
          cerr << "usage: " << av[0] << " xml file" << endl;
          return 1;
     }

     try
     {
          XMLPlatformUtils::Initialize();
     }
     catch( const XMLException& e )
     {
          cerr << "Error during initialization! :\n"
               << e.getMessage() << "\n";
          return 1;
     }

     for ( ;; ){

          parser = new DOMParser;
          parser->setValidationScheme(DOMParser::Val_Always);
          DOMTreeErrorReporter *errReporter = new
DOMTreeErrorReporter();
          parser->setErrorHandler(errReporter);

          //
          //  Parse the XML file, catching any XML exceptions that might
propogate
          //  out of it.
          //
          bool errorsOccured = false;

          try
          {
               parser->parse( av[1] );
               int errorCount = parser->getErrorCount();
               if (errorCount > 0) errorsOccured = true;
          }
          catch( const XMLException& e )
          {
               cerr << "An error occured during parsing file: " << av[1]
<< endl << "Exception message is: " << endl << DOMString(e.getMessage())
<< endl;
               errorsOccured = true;
          }
          catch (const SAXParseException& e)
          {
               cerr << "An SAXParseException error occured during
parsing, got SAXParseException " << DOMString(e.getMessage()) << "\n" ;
               errorsOccured = true;
          }
          catch (...)
          {
               cerr << "\nUnexpected exception during parsing: '" <<
av[1] << "'\n";
               errorsOccured = true;
          }

          if ( errorsOccured || errReporter->getSawErrors() ){
               cerr << "Parse unsuccessful!" << endl;
               delete errReporter;
               delete parser;
               XMLPlatformUtils::Terminate();
               return 1;
          }

          delete errReporter;
          delete parser;

          cout << "Parse successful!" << endl;

          sleep(1);
     } /* for */

     XMLPlatformUtils::Terminate();

     return 0;
}




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to