als/erusage

Erusage Component.

Installs: 10

Dependents: 1

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 0

Language:OpenEdge ABL

1.0.0 2016-11-17 20:16 UTC

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