allocsпакет
Пакет лежит в основном пуле хаба: короткой формы достаточно, если хаб прописан сервером пакетов в opm.cfg.
opm install allocsУстановка на opm младше 1.7.0
Легаси-флоу. Клиент младше 1.7.0 адрес пула в аргументе не разбирает: пул сначала прописывают сервером пакетов, и только потом ставят через него. На 1.7.0 и новее этот раздел не нужен — хватает команды из шапки страницы.
Добавьте пул сервером пакетов в opm.cfg. Порт продублирован в «Сервер»: у opm push поле «Порт» не читается.
{
"СервераПакетов": [
{
"Имя": "default",
"Сервер": "https://hub.1cdevelopers.ru",
"Порт": 443,
"ПутьНаСервере": "/api/v1/pools/default/download/",
"РесурсПубликацииПакетов": "/api/v1/pools/default/push",
"Приоритет": 1
}
]
}И ставьте пакет, указывая сервер:
opm install -m default allocsОписание
allocs
allocs - Инструмент для мониторинга потребления управляемой памяти в скриптах на платформе OneScript.
Установка <a name="installation"></a>
opm install allocs
Использование <a name="usage"></a>
#Использовать allocs
МониторПамяти = Новый МониторПамяти(); // New MemoryMonitor();
| Метод | Описание |
|---|---|
Начать() / Start() |
Сохраняет текущее показание счётчика аллокаций как начало замера. |
Завершить() / Stop() |
Завершает активный замер и возвращает разницу показаний счётчика в байтах. |
РазмерКучи() / HeapSize() |
Выполняет полную сборку мусора и возвращает в байтах оценку памяти, занятой живыми managed-объектами. |
ВсегоВыделеноБайт() / TotalAllocatedBytes() |
Возвращает в байтах текущее накопительное показание счётчика аллокаций. Область счётчика зависит от среды выполнения. |
Область измерения
| Среда выполнения | Источник | Что попадает в результат |
|---|---|---|
| OneScript 2.x / .NET 8 | GC.GetTotalAllocatedBytes(true) |
Все managed-аллокации процесса за интервал, включая фоновые потоки |
| OneScript 1.x / .NET Framework 4.8 | AppDomain.MonitoringTotalAllocatedMemorySize |
Все managed-аллокации текущего AppDomain |
| OneScript 1.x / Mono | GC.GetAllocatedBytesForCurrentThread() |
Только managed-аллокации текущего потока. |
Монитор измеряет объём аллокаций, а не причинную принадлежность объектов конкретному участку кода. Для небольших операций сначала выполните прогрев, повторите операцию много раз и разделите суммарный результат на количество повторов. Во время процессного замера ограничьте постороннюю параллельную работу.
Если после прогрева или других подготовительных операций нужно стабилизировать состояние GC, можно вызвать ВыполнитьСборкуМусора() перед Начать(). Сборка мусора не обнуляет накопительный счётчик аллокаций. Не вызывайте её между Начать() и Завершить(), если накладные аллокации вызова и сопутствующей работы не должны попасть в результат.
На OneScript 1.x / .NET Framework 4.8 отдельная малая аллокация может не изменить значение счётчика сразу. Для таких операций измеряйте серию повторов, а не один вызов. ВыполнитьСборкуМусора() внутри интервала может сделать результат ненулевым за счёт собственных накладных расходов, но это не делает измерение малой аллокации точным.
[!IMPORTANT] Не используйте
РазмерКучи()для измерения аллокаций. Метод вызывает полную сборку мусора и оценивает память, занятую живыми managed-объектами; для дельты аллокаций используйтеНачать()иЗавершить().
Пример измерения выделенной памяти
#Использовать allocs
Монитор = Новый МониторПамяти();
Монитор.Начать();
// Здесь код, потребление памяти которого нужно измерить
Массив = Новый Массив;
Для к = 1 По 100000 Цикл
Массив.Добавить("Длинная строка для теста памяти");
КонецЦикла;
ВыделеноБайт = Монитор.Завершить();
Сообщить("Выделено примерно: " + Формат(ВыделеноБайт / 1024 / 1024, "ЧДЦ=2") + " МБ");
Совместимость <a name="compatibility"></a>
Инструмент протестирован и поддерживается на следующих платформах и версиях OneScript:
| ОС | OneScript 1.9 | OneScript 2.x |
|---|---|---|
| Windows | ✅ | ✅ |
| Linux | ✅ | ✅ |
| macOS | ✅ | ✅ |