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]