가비지 컬렉션

창진·2022년 10월 28일
0

자바

목록 보기
4/10

메모리 누수

메인 메모리는 프로그램이 일하기 위해 필요한 데이터를 올려놓는 공간입니다. 메모리 공간은 한정되어 있고, 프로그램이 계속해서 작동하기 위해서는 다 쓴 데이터를 그때그때 치워 주어야 합니다. 그렇지 않으면 다른 데이터를 올려놓을 공간이 부족해집니다. 이런 문제는 런타입 오류로 이어집니다. 컴퓨터는 메로리가 가득 차버리면 더 이상 프로세스를 진행하지 못하고 일을 중지해버립니다. 이처럼 메모리 공간에 불필요한 데이터가 쌓여서 남아 있는것을 메모리 누수라고 합니다.

언매니지드

몇몇언어(c , c++) 즉 언매니지드 언어에서는 다 쓴 메로리를 개발자가 일일이 치워주어야 합니다. 데이터가 올려진 장소를 포인터로 기억해 두었다가 해당 값을 더 이상 사용하지 않으면 자리를 비워 줘야 합니다.

가비지 컬렉션

자바나 파이썬 같은 현대적인 언어에서는 이 메모리 관리를 상당 부분 자동으로 처리해 주는 기능이 있습니다 이를 가비지 컬렉션 이라고 합니다. 메모리 위의 데이터 중에 사용할 일이 없는 데이터를 컴퓨터가 판단해서 주기적으로 치워주는 것입니다. 가비지 컬렉션 덕분에 메모리를 크게 신경 쓰지 않아도 문제없이 프로그래밍 할 수 있게 되었습니다.

가비지 컬렉션의 한계

가비지 컬렉션은 프로그램이 작동하는 도중 불특정 시점에 실행되는데, 이때 언어의 가비지 컬렉션 작동 방식에 따라 프로그램이 부분적으로 또는 전체적으로 중단됩니다. 어떤 데이터가 더이상 사용되지 않을지 또한 컴퓨터가 판단해야 하므로 연산에도 시간이 소요됩니다. 그렇기때문에 언메니지드 언어에 비해 프로그램 성능이 떨어집니다.
불필요한 데이터를 모두 제거하지 못한다는 점도 한계입니다. 즉 가비지 컬렉션을 사용해도 메모리 누수가 생길 수 있다는 것입니다.

profile
안녕하세요

0개의 댓글