고급강의실

RPG Maker MV 메모리 누수 문제 해결법

by 러닝은빛 posted Jan 07, 2016
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

 

 
RPG Maker MV 에는 현재 여러가지 문제가 있습니다.
 
메모리 사용량 증가 문제
메모리 누수 문제
플러그인 충돌 문제
암호화 문제
용량 문제
모바일 성능 문제
HTML5 에서 세이브 데이터가 사라지는 문제
멀티 플랫폼 배포 문제
fpsmeter.js 의 MIT 라이센스 명시 위반 문제
 
이는 그 중 2가지인 메모리 사용량 증가 문제와 메모리 누수 문제를 다루는 글입니다.
 
메모리 사용량이 증가하는 문제
RPG Maker MV 에는 ImageManager 객체에 리소스 캐시 기능이 있습니다. 
 
리소스를 캐시에 저장해두고 추후에 같은 것을 다시 사용할 땐 다운로드 없이 캐시에 있는 데이터를 바로 쓸 수 있게 하는 기능으로
 
네트워크 통신량을 줄여주는 장점이 있습니다. 
 
다만 ImageManager.clear() 함수를 주기적으로 호출하지 않으면, 
 
결국 캐시 데이터가 쌓이게 돼 메모리 사용량이 증가하는 문제가 생긴다고 합니다. 
 
아래는 공식 포럼에 기재되어있는 패치 원문이며 맵 데이터를 불러올 때 캐시 데이터를 삭제하는 함수를 호출하게 됩니다.
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(function() {
// When loading a new map, consider throwing stuff away:
DataManager._oldPreCacheWiper_loadMapData = DataManager.loadMapData;
DataManager.loadMapData = function(mapId) {
    if (typeof(DataManager._lastSeenMap) == "undefined") {
        DataManager._lastSeenMap = -1;
    }
    if (mapId != DataManager._lastSeenMap) {
        // Purge image data:
        ImageManager.clear();
        // Remember new map id:
        DataManager._lastSeenMap = mapId;
    }
    return DataManager._oldPreCacheWiper_loadMapData(mapId);
}
})();
cs
 
 
메모리 누수 문제 
메모리라고 하면 자바스크립트에 있는 가비지컬렉션이 알아서 해준다고 생각하고 무시할 수 있는데
 
RPG Maker MV 함수에 문제가 있어 원경과 윈도우 객체에 메모리 누수가 발생하고 있다고 합니다. 
 
요약하면 게임을 장시간 플레이하거나 무거운 그리기 작업을 할 때 메모리 문제로 게임이 강제로 종료될 수 있는 상황에 처하게 된 것입니다. 
 
원경이나 윈도우 객체에서 PIXI에 의해 '텍스쳐'가 생성되고 GPU 메모리가 할당되는데
 
MV 에서 추후에 삭제 명령을 내리지않아 메모리 누수가 발생하게 되었다는 것입니다. (즉, 생성만 하고 해제는 따로 하지 않았다는 것)
 
패치는 아래 링크에서 내려받을 수 있습니다.
 
패치 링크
https://gist.github.com/liply/14a2cbe68d2ebb59a7fe (다른 이름으로 링크 저장)
 

 


Articles

1 2 3 4 5 6 7 8 9 10