После того как я поставил вызовы heapCheck в xRefCreate::updateReferences() и в xRefCreate::updateDBReferences() - отъедание памяти кончилось.
В xrefCreate::updateReferences() надо вставлять вызовы heapCheck.shrinkPool() и heapCheck.postCompactingMessage() в конец условия:
if (counter>500)
{
}
В xRefCreate:updateDBReferences() - просто в самом конце функции - перед return.
На самом деле во время обновления перекрестных ссылок система постоянно создает нехилые mapы состоящие из structов, потом после того как таких элементов накопится 500 штук - она их записывает в базу (в функции updateReference), а затем удаляет. А от этого случается нехилая фрагментация памяти, от которой постоянно приходится захватывать новую оперативку у системы и тп. После того как мы поставили вызовы сжатия памяти и в двух методах (один всегда на клиенте отрабатывает, второй - может и на сервере и на клиенте работать), дефрагментация памяти прошла и потребности ее все время у операционки захватывать - нету.
Последний раз редактировалось fed; 02.11.2005 в 11:09.
|