als / erusage
Erusage Component.
Installs: 10
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Language:OpenEdge ABL
Requires (Dev)
- parser/composer: ^1.0
This package is auto-updated.
Last update: 2024-12-24 18:40:12 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