사용자 도구

사이트 도구


kb:luaapigarbagecollection

LuaApi/GarbageCollection

루아는 incremental mark-and-sweep 알고리즘을 이용한 가비지 컬렉션을 수행한다. 이 과정에 사용되는 변수에는 2가지가 있다. 하나는 garbage-collector pause 값, 나머지 하나는 garbage-collector step multiplier 값이다.

Garbage-collector pause 값은 새로운 사이클을 시작하기 위해 메모리가 얼마나 커질 때까지 기다리는 가에 대한 값이다. 이 값이 2라면 사용하는 메모리가 현재의 2배가 되면 가비지 컬렉션을 시작하겠다는 말이다. 이 값이 1보다 작으면 당장 가비지 컬렉션 사이클을 시작한다.

Garbage-collector step multiplier 값은 메모리 할당 속도와 가비지 컬렉션 속도와의 비율을 정한다. 잘 이해가 안 가는데, 어쨌든 이를 통해 가비지 컬렉션의 속도를 결정한다고 한다. 이 값이 1이라면 메모리 할당 속도와 가비지 컬렉션 속도가 일치한다는 말이며, 이 경우 가비지 컬렉션이 정상적으로 동작하지 않을 수도 있다. 기본값은 2인데, 이는 가비지 컬렉션이 메모리 할당에 비해 2배의 속도로 동작한다는 말이다.

lua_gc

int lua_gc (lua_State *L, int what, int data);

옛날 버전은 lua_getgccount, getgcthreshold, setgcthreshold 등의 함수를 사용했었는데, 언제부터인지 lua_gc 함수 하나로 통일되었다. 자세한 것은 공식 매뉴얼을 참고…


kb/luaapigarbagecollection.txt · 마지막으로 수정됨: 2014/11/07 10:02 (바깥 편집)