|
![]() |
#1 |
Moderator
|
Мне вызова этих двух функций хватало в некоторых ситуациях чтобы почистить память. Вообще-то - этот класс просто обертка над библиотекой SmartHeap, документация на которую лежит здесь:
http://www.microquill.com/kb/docs/01_intro.html Честно говоря - сам до конца с этой библиотекой не разбирался - особой надобности не было. Как я понимаю - метод shrink() просто приводит к тому что неиспользуемая память из всех пулов возвращается в ОС. Метод postcompactingMessage посылает приложению сообщение WM_COMPACT. По стандарту - при его получении, приложение должно освободить всю ту память, которая в данный момент не очень нужна. Я так подзреваю - сама Аксапта при получении этого сообщения просто вызывает shrink(). Отличие метода postCompactmessage от прямого вызова Shrink, насколько я понимаю, состоит в том что при получении этого сообщения память будут (по крайней мере - должны ) освобождать и всякие внешние activeX, загруженные в процессе Axapta. Приведенный komarом текст - не оптимален. Правильнее взять текст функции Global::smartheapmemorySizeUp() из каких-нибудь последних сервис-паков третьей версии и перенести на 2.5. Ну и соответственно поставить вызов этой функции куда-нибудь в application.startupPost() |
|