Xerces-C увеличивает использование памяти - PullRequest
1 голос
/ 01 октября 2019

В настоящее время я борюсь с ростом использования памяти в Xerces-C.

Мне удалось упростить код до этой точки:

xercesc_3_2::XMLPlatformUtils::Initialize();

xercesc_3_2::DOMImplementation* impl = xercesc_3_2::DOMImplementationRegistry::getDOMImplementation((const XMLCh*)L"LS");
xercesc_3_2::DOMDocument* doc = impl->createDocument();

while (true)
{
    xercesc_3_2::DOMElement* el = doc->createElement((const XMLCh*)L"root");
    el->release();
}

Когда я выполняю этот код,использование памяти увеличится до 4 ГБ через ~ 30 секунд.

  • Нужно ли мне вызывать что-либо еще, кроме release() на DOMElement, чтобы освободить память?
  • Есть ли способ действительно освободить память, используемую DOMElement без освобождения DOMDocument

Некоторые замечания к моемувопросы:

  • Я не могу уничтожить DOMDocument. (К сожалению, я должен держать это вокруг с большим количеством DOMElement s, созданных и выпущенных)
  • Я знаю, что технически это не утечка памяти, так как память освободится, когда я выпущу DOMDocument, ноэто известная проблема?
  • Я тестировал версии xerces-c 3.1.1, 3.1.4. 3.2.2. Проблема существует во всех этих версиях.
...