Memory

Heap / Stack

Memory

Heap / Stack


안드로이드 OS 에서 힙(Heap)과 스택(Stack)은 메모리 관리와 관련된 중요한 개념이다.

안드로이드에서 힙과 스택을 효과적으로 관리하여 메모리 누수와 성능 문제를 방지하는 것이 중요하기 때문이다.

특히 큰 객체나 데이터 구조를 힙에 할당할 때 메모리 사용량과 성능에 주의해야 하며, 함수 호출과 관련된 스택 사용도 최적화하는 것이 좋다.

안드로이드 개발에서 사용되는 언어인 Java 혹은 Kotlin 은 힙과 스택을 자동으로 관리해주는 메모리 관리 시스템을 내장하고 있다.

Heap

힙은 동적으로 할당된 메모리 공간을 관리하는 영역으로, 프로그램 실행 중 메모리를 동적으로 할당하고 해제하는데 사용된다.

주로 객체와 데이터 구조를 저장하는 데 사용되며, 개발자가 메모리를 직접 관리해야 한다.

안드로이드 앱에서는 대부분의 객체가 힙에 할당되고 관리되며, Java 혹은 Kotlin 은 가비지 컬렉터가 더 이상 필요하지 않은 객체를 자동으로 제거해준다.

Stack

스택은 함수 호출과 관련된 데이터를 관리하는 영역으로, 함수가 호출될 때마다 스택에 함수의 로컬 변수, 매개 변수 등이 저장되며, 함수가 반환될 때 스택에서 해당 데이터는 제거된다.

스택은 후입선출(LIFO) 원칙을 따르며 일반적으로 함수 호출과 관련된 작업을 효과적으로 처리하는 데 사용된다.

Garbage Collection

사용하지 않는 객체를 확인하고 삭제하여 자동으로 메모리를 관리해주는 기능을 말한다.


Memory Leak


애플리케이션에서 사용이 끝난 메모리를 반환하지 않는 경우를 말한다.

메모리 릭이 발생하면, 사용한 메모리를 반환하지 않은 채 추가로 필요한 메모리를 시스템에 요청해서 사용하는 메모리가 계속해서 증가하게 된다.

결국에는 메모리가 오버플로우(overflow) 되어 OutOfMemoryError 가 발생해서 애플리케이션이 강제 종료되면서 할당되었던 메모리가 시스템에 회수된다.

essential