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