현재 Unity를 이용하여 만든 어플의 메모리 사용량과 배터리 사용량을 확인할 필요가 있었다. 어플을 실행하고 Xcode의
부분을 클릭하니 원했던 정보를 확인할 수 있었다.
확인하니 맨 위의 사진과 같이 memory가 끝도없이 상승하는 메모리 누수현상을 발견하였다. 어플을 실행했을 때 시간이 지난 후 튕기는 현상이 발생했었는데 아마 메모리가 계속 증가하다 한계치를 넘었을 때 튕기는 현상이 발생한 듯 하다. 이유를 곰곰이 생각하니
Unity AR camera 화면 정보 일부분을 추출하기 에서 언급했던 튕기는 현상이 생각이 났고 코드를 돌아보니
private Texture2D CaptureImage()
{
int width = Screen.width;
int height = Screen.height / 3;
Texture2D Texture = new Texture2D(width, height, TextureFormat.RGB24, false);
Texture.ReadPixels(new UnityEngine.Rect(0, 2 * height, width, height), 0, 0);
Texture.Apply();
return Texture;
}
...?!
코드를 함수들로 변경하면서 이전에 말했던 update 부분에
Texture2D Texture = new Texture2D(width, height, TextureFormat.RGB24, false);
코드를 넣어서 생성한 texture를 이용하는 것이 아니라 지속적으로 생성하여 메모리 누수 현상이 발생했던 것이다...
이 코드를
private Texture2D CaptureImage()
{
Texture2D Texture = tex;
int width = Screen.width;
int height = Screen.height / 3;
Texture.ReadPixels(new UnityEngine.Rect(0, 2 * height, width, height), 0, 0);
Texture.Apply();
return Texture;
}
이렇게 바꾸니
문제 해결.... 그래도 배운것이 있다면 정신을 잘 차리고 코드를 짜자... To Be Continued...