[목차] Memory leak. == 개요 == [[응용 프로그램]]에서 데이터를 [[메모리]]에 올렸다가, 이것이 쓸모없어지는 시점에서 적절하게 제거되지 않는 것을 물이 새는 '[[누수]]'에 빗댄 말이다. [[영어]]를 그대로 읽은 '메모리 릭'이라는 표현으로도 적지 않게 쓰인다. 이것이 지속되면 메모리 자원의 반환이 원활히 되지 않아 이런저런 [[버그]]가 생기거나, 아예 프로그램 자체가 [[리타이어]]하는 등 [[헬게이트]]가 펼쳐진다.[* 특히 메모리 사용량이 높고 실시간 물리엔진 활용이 많은 콘솔 3D 게임의 경우 이 문제가 심각한데, 대표적인 것이 [[X-COM 시리즈]]이며 게임을 오래 플레이 할 수록 누수 메모리 때문에 각종 버그가 터져나오다가 결국 메모리가 다 차면 다운되는 현상을 경험할 수 있다. 이런 현상이 발생하는 게임들에서 유저가 할 수 있는 것은 메모리 용량을 늘려 다운되는 것을 늦추는 것밖에 없다.] [[쓰레기 수집]] 기능은 이를 방지하기 위한 기능이지만 완전하지는 않다. [[발적화]]의 원흉 중 하나. 메모리에 데이터가 남아 있어도 그 상황을 운영체제가 통제하고 있다면 데이터 누수라고 하긴 어렵다. [[Windows Vista]] 이후의 운영체제 및 [[안드로이드(운영체제)|안드로이드]]에선 옛날만큼 메모리 공간이 빡빡하지 않다는 것을 감안하여 사용자가 종료시킨 프로그램을 일부러 메모리 상에 남겨두어 나중에 사용자가 다시 찾았을 때 더 빠르게 응답할 수 있도록 설정되어 있다. 하지만 이 경우는 운영체제가 현재 상황을 알면서 일부러 놔둔 것이므로 사용자가 다른 작업을 하느라 메모리 공간이 부족해지면 운영체제가 알아서 메모리를 정리해준다. 다만 [[Windows 10/버전|윈도우 10 1703]]부터는 저 정리의 반응속도가 느려서 고사양 게임에서 [[랙(컴퓨터)#s-4.1|마이크로스터터링]]을 일으키는 문제가 있었다.[[https://quasarzone.com/bbs/qb_tip/views/12664|#]] 게임 자체 최적화 문제와 맞물려서 큰 논란이 된 가장 대표적인 사례가 바로 [[PUBG]] ([[톰 클랜시의 디비전 2]]의 사례를 포함한 설명 [[https://bbs.ruliweb.com/family/492/board/184778/read/15391|#]]) 그리고 [[윈도 모바일]]은 메모리가 빡빡한데도 기본 설정으론 이렇게 동작해서 문제였다. 한편 [[FORTRAN]]이나 [[BASIC]], [[C언어|C]] 등의 [[프로그래밍 언어]]는 쓰레기 수집을 지원하지 않는다. 애초에 이 언어들은 프로그래머를 믿고 컴파일러의 개입을 최소화하는 게 특징이니.. [[C++]]의 경우, C++11 이후 추가된 스마트 포인터에서 [[쓰레기 수집|참조 횟수 카운팅 쓰레기 수집]]을 지원하지만, 어디까지나 선택사항이고 성능 하락을 막기 위해 직접 관리해야 하는 부분도 적지 않다. 사전공 프로그래머는 오늘도 메모리와의 전쟁을 치르고 있다... [[지못미]]. [각주][include(틀:문서 가져옴, title=누수, version=45, paragraph=1.2)] [[분류:프로그래밍]]