본문 바로가기

LiDAR

Unity AR 메모리 누수 현상 잡기

728x90

지금까지 Unity를 이용하여 만든 어플이 실행 중 튕기는 현상이 지속적으로 발생하여 메모리 사용량과 배터리 사용량을 확인할 필요가 있었습니다.

저는 맥북을 사용하여 어플을 제작하였기에 어플을 실행하고 Xcode의 

 

위 빨간 부분을 클릭하니 원했던 정보를 확인할 수 있었습니다.

 

 확인한 결과 위의 사진과 같이 memory가 끝도없이 상승하는 메모리 누수현상을 발견하였습니다. 어플을 실행했을 때 시간이 지난 후 튕기는 현상이 아마 메모리가 계속 증가하다 한계치를 넘었을 때 튕기는 현상이 발생한 듯 합니다.

메모리가 지속적으로 증가하는 이유를 찾기위해 코드를 들여다 보니

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를 이용하는 것이 아니라 Update에서 지속적으로 생성하여 메모리 누수 현상이 발생했던 것입니다...

 

위 코드를

 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... 

'LiDAR' 카테고리의 다른 글

Unity iOS notification  (0) 2024.02.27
Unity AR iOS LiDAR 활용  (0) 2024.02.26
Unity AR 딥러닝 사용하기  (2) 2024.02.25
Unity AR camera with iOS LiDAR  (0) 2024.02.24
Unity AR Raycast 사용하기  (2) 2024.02.24