비주얼노벨 강좌

원문: http://cafe.naver.com/luamadang/73

 

루아의 메모리 관리는 자동적으로 이루어 집니다.  이 말은 루아 프로그래머가 새로 생성되는 object 에 대한 메모리를 할당 하고 해제하는 것에 신경을 쓰지 않아도 된다는 말이죠.

 

루아는 garbage collector 라는 것을 돌려 메모리 관리를 자동으로 하도록 되어 있습니다.

이러한 일은 "from time to time" , 즉 때때로이죠.. 가끔 수행한다는 뜻으로 해석해도 될 듯 합니다.

 

자동으로 해제되는 메모리들은 루아에서 더이상 접근할 수 없는 메모리들을 말합니다. (no longer accessible from lua)

이러한 메모리들은 tables, userdata, functions, threads, strings, 등등 입니다.

 

루아의 garbage collector 방식은 "Mark and Sweep algorithm" 을 사용 합니다.

이 방식은 garbage collection 방식중 처음으로 개발된 방식으로 가장 많이 사용되는 방식중 하나 입니다.

 

이 방식에 대하여 설명은

http://www.brpreiss.com/books/opus5/html/page424.html 

를 참조하시기 바랍니다.

 

간단하게 설명하면,

mark and sweep algorithm 은 두 단계로 동작 합니다.

 

mark phase : 첫번째로는 모든 접근 가능한 객체들을 찾아서 mark 를 합니다. 이를 mark phase 라 합니다.


sweep phase : 두번째 단계로 garbage collection 알고리즘은 모든 힙 메모리를 스켄 합니다. 그리고 unmarked 즉 mark 가 되지 않은 메모리들을 수거 합니다. 두번째 단계를 sweep phase 라 합니다.

루아 시스템이 garbage collection 을 수행할 때는 루아 실행이 순간적으로 멈추게 됩니다.

그러므로 너무 자주 발생하면 속도에 영향을 줄 수 있으며, 그 반대일 경우에는 메모리 사용량이 늘어날 것 입니다.

속도 또는 메모리에 문제가 있을 경우 , 이를 적정하게 맞추어 주어야 합니다.

 

루아는 garbage-collection 의 수행을 주기적으로 합니다. 이 주기를 제어하기 위해서 두가지의 값을 사용합니다.

    1. 동적 할당 메모리 카운트 -- 동적으로 할당된 메모리가 얼마인지를 카운트 한다.
    2. threshold  -- 문턱값, 즉 garbage - collection 이 수행되어지는 경계값.

동적 할당 메모리의 크기가 threshold 문턱값에 다다를때 루아는 garbage collection을 수행 합니다. 이때 죽은 메모리를 회수하게 되는 것 입니다.

 


List of Articles
분류 제목 글쓴이 날짜 조회 수
Ren'Py 렌파이 관련 유용한 링크 모음 3 file 습작 2012.12.02 17599
Nekonovel 네코노벨 관련 유용한 링크 모음 1 file 습작 2012.11.19 11967
Vasilriot 해상도 조절에 관한 간단한 고찰 2 하늘바라KSND 2013.05.18 3139
Visual Novel Maker 한글 텍스트 입력 file 러닝은빛 2017.11.21 1443
피니엔진 피니엔진 타이틀 만들기 예제(구버전) 1 file 하늘바라KSND 2015.01.27 1770
피니엔진 텍스트, 대화, 독백 명령어 하늘바라KSND 2014.12.21 1567
피니엔진 타이틀+클릭메뉴 예제 file 하늘바라KSND 2015.07.11 1102
Neko:Lua 좀비서바이벌 1.11b 버전 Lua 스크립트 16 판져중위 2009.11.30 9285
기타 제작툴 소개 : Novelty란 무엇인가? 4 file 습작 2013.05.09 4559
기타 제작툴 소개 : LiveMaker란 무엇인가? 4 file 습작 2013.05.09 8701
Vasilriot 장면 전환할 때 사용할 '장막효과'를 구현해보자. 하늘바라KSND 2013.05.09 2705
피니엔진 애니메이션-스프라이트 간단한 팁 몇가지 하늘바라KSND 2015.07.11 1288
피니엔진 안드로이드로 배포판을 만들기 위해 필요한 것들 하늘바라KSND 2014.12.20 1522
Neko:기타 쓰레드에 '대기' 명령어를 넣었을 때 나타날 수 있는 현상 file 하늘바라KSND 2014.11.27 1024
VNAP 선택지 발생 3 file FNS키리토 2015.01.11 2013
Neko:Lua 비쥬얼 C++에 루아 연동시키기- file Saber 2010.01.02 7977
기타 비주얼 노벨을 처음 제작하시는 분들께 1 file FNS키리토 2015.01.11 13766
Vasilriot 바실리어트의 최신 버전 file 하늘바라KSND 2013.05.11 3989
Vasilriot 바실리어트에서 지원하는 vr팩. 언팩이 가능할까? 하늘바라KSND 2013.05.11 2650
Vasilriot 바실리어트 스크립트 정리하기. file 하늘바라KSND 2012.11.10 3508
Vasilriot 바실리어트 사용할 때 조심해야 할 것 :: 글자수 제한(명령어 오류)(2013.05.15수정) file 하늘바라KSND 2013.05.09 2750
Vasilriot 바실리어트 버튼 사용하기 file 하늘바라KSND 2012.12.21 3163
Board Pagination Prev 1 2 3 Next
/ 3