als / erusage
Erusage Component.
Installs: 14
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Language:OpenEdge ABL
pkg:composer/als/erusage
Requires (Dev)
- parser/composer: ^1.0
This package is auto-updated.
Last update: 2025-10-24 20:38:47 UTC
README
Учёт используемой памяти и сборка мусора.
Installation
$ composer require als/erusage
Information
Ну вот, приехали... И тут дожили до сборки мусора... Ну а кто обещал что будет совсем легко? В общем пользоваться ей совершенно не обязательно, но иногда наступает момент когда она может пригодиться. Родной ^memory:compact[] никто не отменял, но вызывать его при каждом чихе не стоит, т.к. упоминаемая операция не сказать что очень быстрая.
И тут может помочь предлагаемый класс Als/Erusage, в задачу которого в принципе входит абсолютно то-же самое: периодические вызовы ^memory:compact[], но делать он это будет не постоянно. И в добавок к этому он будет накопливать простенькую статистику, которая может вам пригодиться.
Как обычно все просто: в местах, после которых как вам кажется надо бы пособирать мусор, вызываете ^Als/Erusage:compact[] вместо обычного ^memory:compact[]. Все. :)
И что это даст? Дело в том что класс будет вызывать парсерный ^memory:compact[] только тогда, когда с момента последней сборки мусора будет использовано памяти больше, чем значение $.iLimit (по умолчанию 2048 КБ), в противном случае ничего делаться не будет (кроме учета количества вызовов). Значение $.iLimit можно изменить с помощью вызова статического метода ^Als/Erusage:init[ $.iLimit(4096) ].
Если в очередной точке пространственно-временного континиума вашего кода вы решите, что тут нужно обязательно выполнить самый что ни на есть настоящий ^memory:compact[], то смело зовите ^Als/Erusage:compact[ $.bForce(1) ] и он будет выполнен, век воли не видать :)
А на последок в @postprocess[] вы можете вызвать ^Als/Erusage:print[] и вывести накопленные результаты на экран (или в файл, если вызовете ^Als/Erusage:print[ $.sFile[путь/к/файлу.log] ]).
А ещё из @postprocess[] можно вызвать ^Als/Erusage:log[ $.sFile[/путь/к/erusage.log] ] и класс в лог запишет время формирования страницы и израсходованную память (ну и ещё кое какие полезные мелочи).
Вот теперь совсем всё :)
References
- Bugs and feature request are tracked on GitHub