|
![]() |
#1 |
Moderator
|
После того как я поставил вызовы 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. |
|