GC
@NativeRuntimeApi object GC
Примечание: этот API нестабилен и может измениться в любой версии.
Kotlin/Native использует отслеживающий сборщик мусора (GC), который выполняется периодически для сбора объектов, недоступных из «корней», таких как локальные и глобальные переменные. См. документацию, чтобы узнать больше о управлении памятью в Kotlin/Native.
Этот объект предоставляет набор функций и свойств, которые позволяют настраивать сборщик мусора.
Устаревший менеджер памяти
Kotlin/Native полагается на подсчет ссылок для управления объектами, однако он не может собирать циклический мусор, поэтому мы выполняем периодический сбор мусора. Это может замедлить приложение, поэтому этот интерфейс предоставляет контроль над тем, как активируется и выполняется сборщик мусора. Сборщик мусора может находиться в одном из следующих состояний:
- запущен
- приостановлен (так кандидаты на циклы собираются, но сам сбор мусора не выполняется до возобновления)
- остановлен (весь циклический мусор безвозвратно потерян) Сразу после запуска GC находится в рабочем состоянии. В зависимости от потребностей приложения оно может выбрать приостановить GC для определенных фаз своего жизненного цикла и возобновить его позже или просто полностью отключить его, если паузы GC менее желательны, чем утечки циклического мусора.
Свойства
autotune
Если true, обновляет targetHeapBytes после каждого сбора.
var autotune: Boolean
collectCyclesThreshold
Устарело и не используется.
var collectCyclesThreshold: Long
cyclicCollectorEnabled
Устарело и не используется.
var cyclicCollectorEnabled: Boolean
lastGCInfo
Возвращает статистику последнего завершённого запуска сбора мусора. Эта информация предназначена только для тестирования и отладки.
val lastGCInfo: GCInfo?
maxHeapBytes
Максимальное значение для targetHeapBytes. Используется только если autotune равно true. Подробнее см. targetHeapBytes.
var maxHeapBytes: Long
minHeapBytes
Минимальное значение для targetHeapBytes. Используется только если autotune равно true. Подробнее см. targetHeapBytes.
var minHeapBytes: Long
regularGCInterval
Когда Kotlin-код не выделяет достаточно памяти для запуска GC, планировщик GC использует таймер для управления сбором. Сбор, запускаемый таймером, произойдёт приблизительно через regularGCInterval .. 2 * regularGCInterval с момента предыдущего сбора. Не используется с планировщиком GC на контрольных точках.
var regularGCInterval: Duration
targetHeapBytes
Общий объём кучи, доступный для Kotlin-объектов. Когда Kotlin-объекты переполняют эту кучу, запрашивается сбор мусора. Автоматически настраивается, когда autotune равно true: после каждого сбора targetHeapBytes устанавливается в heapBytes / targetHeapUtilization и ограничено значениями между minHeapBytes и maxHeapBytes, где heapBytes — использование кучи после сбора мусора. Обратите внимание, что если после сбора heapBytes > targetHeapBytes (что может произойти, если autotune равно false или maxHeapBytes слишком низко), следующий сбор будет инициирован практически мгновенно.
var targetHeapBytes: Long
targetHeapUtilization
Какая часть кучи Kotlin должна быть заполнена. Используется только если autotune равно true. Подробнее см. targetHeapBytes.
var targetHeapUtilization: Double
threshold
Порог GC, контролирующий частоту активации GC и время, затрачиваемое на GC. Большие значения приводят к более длительным паузам GC, но меньшему количеству сборок. Обычно не используется. Для планировщика GC на контрольных точках подсчитывается, сколько контрольных точек должно пройти код перед уведомлением планировщика GC.
var threshold: Int
thresholdAllocations
Сколько байт может выделить поток перед уведомлением планировщика GC.
var thresholdAllocations: Long
Функции
collect
Запускает новый сбор и ждёт его завершения.
fun collect()
collectCyclic
Устарело и не используется.
fun collectCyclic()
detectCycles
Устарело и не используется. Всегда возвращает null.
fun detectCycles(): Array<Any>?
findCycle
Устарело и не используется. Всегда возвращает null.
fun findCycle(root: Any): Array<Any>?
resume
Устарело и не используется.
fun resume()
schedule
Запускает новый сбор без ожидания его завершения.
fun schedule()
start
Устарело и не используется.
fun start()
stop
Устарело и не используется.
fun stop()
suspend
Устарело и не используется.
fun suspend()
© 2010–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.native.runtime/-g-c/index.html