Показать сообщение отдельно
Старый 24.07.2012, 09:19   #3  
_AxDevel_ is offline
_AxDevel_
Участник
 
69 / 12 (1) ++
Регистрация: 20.08.2008
Адрес: Ижевск-Москва
Цитата:
Сообщение от samolalex Посмотреть сообщение
Из этого сообщения:

Поэтому, скорее всего, при разрывах связи счетчики указателей на неиспользуемые объекты не сбрасываются. Поэтому в этой ситуации следует каким-либо образом в случае возникновения ошибки очищать неиспользуемую память посредством метода shrinkPool() класса HeapCheck, предназначенного для управления памятью в Аксапта.
Таким образом, мне кажется, для устранения вышеуказанной проблемы можно реализовать конструкцию вроде этой:
X++:
    HeapCheck   hc;

    try
    {
        //Операция обновления книги продаж
    }
    catch(Exception::Error)
    {
        hc.shrinkPool();
        //...
    }
У меня вот вопрос, кто отвечает за очистку памяти: винда, сама аксапта, CLR? При создании большого числа объектов с последующим их удалением получаем фрагментированную кучу на аосе. Может быть, это служит причиной роста занимаемой аосом памяти?