Каков наилучший способ для вывода отладки для сборщика мусора lua? - PullRequest
2 голосов
/ 09 ноября 2009

Мне нужен объект состояния игры в lua (не c ++ или привязанный к C ++) для управления источниками света, камерами, объектами, событиями из моего движка C ++ (объекты lua являются отдельными объектами от c ++, в значительной степени просто стандартные таблицы lua). Я обеспокоен тем, как GC будет действовать при удалении этих объектов, поскольку они будут создаваться и удаляться на лету. Каков наилучший способ включить выход для ГХ? У меня есть код lua, встроенный в мой код ...

Ответы [ 2 ]

4 голосов
/ 24 ноября 2009

У сборщика мусора Lua нет вывода. У вас есть два варианта здесь.

Во-первых, вы можете предоставить Lua специальный распределитель. Это позволит вам отслеживать, как и когда Lua выделяет и освобождает память. Это говорит о том, как часто GC запрашивает больше памяти и как часто он освобождает указанную память. Вы также можете добавить отслеживание распределения, которое позволит вам обнаружить «утечку» памяти при выходе из приложения.

Поскольку у вас есть исходный код, вы также можете напрямую добавить инструментарий в код сборщика мусора Lua. Он содержится в lugc.c.

0 голосов
/ 09 ноября 2009

Вы читали руководство по Lua?

Объекты Lua полностью скрыты со стороны C ++, поэтому вы должны поместить каждый объект Lua в специальную хэш-таблицу и удалить его оттуда при уничтожении объекта C ++. Если объекты C ++ и Lua имеют одинаковое время жизни, вы можете просто сделать этот код в ctor / dtor.

Если вы хотите отладочный вывод для GC, я думаю, вам нужно добавить строки printf непосредственно в исходный код lua, поскольку в стандартной базе кода Lua для этого нет кода AFAIK.

...