Latest web development tutorials

вывоз мусора Lua

Lua использует автоматическое управление памятью. Это означает, что вам не нужно беспокоиться о вновь созданного объекта, как выделить память, они не считают, как они освободить память, занимаемую после того, как объект больше не используется.

Lua работаетсборщик мусора , чтобы собрать все мертвые объекты(то есть объекты не могут быть доступны в Lua) , чтобы выполнить автоматическое управление памятью. Lua используется во всей памяти, такие как: строки, таблицы, пользовательских данных, функций, потоков, внутренней структуры и т.д., подлежат автоматическому управлению.

Lua реализует добавочную знак - сборник сканирования. Он использует два номера для управления циклом сбора мусора: уровень собираемости сборщик мусора мусора и прерывистый шаговый увеличения. Оба показателя используют процент единиц (например: значение 100 во внутреннем представлении 1).

Сбор мусора периодически контролирует скорость необходимо собрать перед открытием нового цикла долго ждать. Увеличение этого значения приведет к снижению энтузиазм коллектора. Когда это значение меньше, чем 100, когда коллектор перед открытием нового цикла не придется ждать. Установите это значение на 200 позволит коллекторы ждать, пока в два раза общее использование памяти не достигнет до начала нового цикла.

Сборщик мусора шагового увеличения контролирует рабочую скорость коллектора относительно соотношения скоростей выделения памяти до. Это позволит не только увеличить стоимость коллектора более агрессивной, но и увеличить длину каждого приращении. Не устанавливайте это значение меньше, чем 100, так что если коллектор работать медленно, поэтому всегда так много, чтобы сделать петлю. Значение по умолчанию равно 200, что означает, что выделение памяти на коллекторе "двойной" скорости работы.

Если вы наступите увеличение до очень большого числа (количество байт, чем вы можете использовать в программе также на 10% больше), коллектор действует как стоп-мире коллекционер. Затем, если вы положили прерывистый скорость набора до 200, поведение коллектора и прошлых Lua версий одного и того же: каждая память, используемая Lua в два раза, чтобы сделать полную коллекцию.


Функция мусоропровода коллектор

Lua обеспечивает следующие функцииcollectgarbage ([[отказа, аргумент] ]) используется для управления автоматическое управление памятью:

  • collectgarbage ( "сбор"): сделать полный цикл сборки мусора.Параметр OPT, который предоставляет различный набор функций:

  • collectgarbage ( "рассчитывать"): K вернуть количество байтов общий объем памяти , используемый Lua.Это значение имеет дробную часть, нам нужно только умножить 1024 вы можете получить точное количество байтов, используемый Lua (если перерасход).

  • collectgarbage ( "перезагрузка"): Перезапуск сборщик мусора запускается автоматически.

  • collectgarbage ( "setpause"): Установите агд коллектор прерывистый скорости (см; 2.5).Возврат к предыдущему значению прерывистого скорости.

  • collectgarbage ( "setstepmul"): Возвращает предыдущее значение шага увеличения.

  • collectgarbage ( "шаг"): один шаг запустить сборщик мусора.Шаг "размер" с помощью управления агд. 0 входящий коллектор шаговый (неделимыми) шаг. Входящий ненулевое значение, коллектор для сбора эквивалентное распределение Lua таких множественных (K байт) работы памяти. Если конец коллектора цикла возвращает истину.

  • collectgarbage ( "стоп"): остановить работает сборщик мусора.Перед вызовом перезагрузки, коллектор только из-за явного вызова для запуска.

Ниже показан простой пример сбора мусора:

mytable = {"apple", "orange", "banana"}

print(collectgarbage("count"))

mytable = nil

print(collectgarbage("count"))

print(collectgarbage("collect"))

print(collectgarbage("count"))

Вышеприведенная программа, выходные результаты являются следующие (изменить примечание в использовании памяти):

20.9560546875
20.9853515625
0
19.4111328125