YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Korean subtitles

← 04-04 Memory_Leaks

04-04 Memory_Leaks

Get Embed Code
13 Languages

Showing Revision 3 created 04/30/2016 by nc_translator1.

  1. 안드로이드가 사용하는 자바 언어의 가장 큰 장점 중 하나는
  2. 메모리 관리 환경이라는 점이죠
  3. 너무 연연하지 않아도 된다는 뜻이에요
  4. 객체가 생성되고 해제되는 타이밍에 대해서 말이죠
  5. 메모리 관리 환경은 편리하긴 하지만
  6. 보이지 않는 곳에서 성능 문제가 발생할 수 있어요
  7. 잊지 마세요
  8. 안드로이드 런타임의 메모리 힙은 스페이스라는 단위로 나누어져 있어요
  9. 메모리를 차지하는 데이터의 종류와
  10. 시스템이 GC를 최적화할 수 있는 방법을 기준으로 스페이스를 분류해요
  11. 각 스페이스는 메모리 크기가 지정되어 있어요
  12. 객체에 할당된 메모리의 크기가 스페이스의 총 크기에 근접하면
  13. GC가 실행되어 불필요한 객체를 해제하고
  14. 메모리 일부를 반납해요
  15. 보통 GC 이벤트는 애플리케이션 성능에 큰 문제를 일으키지 않아요
  16. 하지만 GC가 반복적으로 발생하면
  17. 프레임 타임의 큰 부분을 차지하게 됩니다
  18. GC를 하는 시간이 길어질수록
  19. 렌더링과 오디오 스트리밍 등 다른 작업을 할 시간이 줄어들어요
  20. 개발자가 자주 맞닥뜨리는 GC 관련 성능 문제 중
  21. 메모리 누수라는 상황이 있는데요
  22. 메모리 누수는 애플리케이션이 더 이상 사용하지 않는 객체를
  23. GC가 가려내지 못하는 상황을 일컫는데요
  24. 결과적으로 불필요한 객체가 해제되지 않고
  25. 스페이스의 소중한 공간을 차지해
    다른 객체들이 스페이스를 활용할 수 없게 돼요
  26. 메모리 누수가 지속되면
  27. 메모리 힙의 가용한 공간이 매 세대마다 줄어듭니다
  28. 그래서 GC 이벤트가 더 자주 실행돼요
  29. 프로그램 실행 중 필요한 메모리를 확보하기 위해서 말이죠
  30. 메모리 누수를 찾고 고치는 건 까다로워요
  31. 누수는 아주 간단한 이유로도 발생하거든요
  32. 예를 들어 프로그램이 사용하지 않는 객체에 대해
    순회적인 참조를 하면 발생해요
  33. 반면 복잡한 누수도 있어요
  34. Class loader 객체에 대한 핸들러를 생성한 후
    해제해주지 않을 경우처럼 말이죠
  35. 경우가 어떻든 매끄럽고 빠른 애플리케이션은
  36. 메모리 누수의 존재를 인지하고 민감하게 대처해야 해요
  37. 생각해봐요 여러분의 코드는 수많은 기기에서 실행될 테고
  38. 기기마다 제각각
  39. 메모리 크기와 사용량이 다르겠죠
  40. 다행히도 메모리 누수 찾는 작업을 도와주는 간단한 툴이 있어요
  41. 안드로이드 SDK에 말이죠
  42. 함께 살펴볼까요?