[자바] 메모리 관리 - 스택 & 힙 (+가비지컬렉션)

2021. 12. 8. 11:27Java

배우고 이해한 내용을 정리하는 글로써 틀린 부분이 있을 수 있습니다. 잘못된 점이 있으면 댓글로 남겨주시면 감사하겠습니다.


데이터를 저장하는 방식은 간단하게 나누면 컴퓨터 메모리에 저장되는 메모리 영역에 저장하는 방식과 외부 데이터베이스와 연결하여 외부 저장소에 저장하는 방식이 있다. 이 글은 자바에서 메모리 관리가 어떻게 이루어지는지에 대한 포스팅이다.

 

프로그램의 공통된 메모리 사용방식

코드 실행 영역 데이터 저장 영역

프로그램이 메모리를 사용하는 공통된 방식은 크게 코드 실행 영역과 데이터 저장 영역으로 분리해서 사용한다. 

 

객체지향 프로그램의 메모리 사용방식

코드 실행 영역 스태틱(static)
영역
스택(stack) 영역 힙(heap)
영역

객체지향 프로그램에서는 데이터 저장영역을 다시 세개의 영역으로 분할해 사용한다. 이와 같은 데이터 저장영역은 객체지향 프로그램에서 사용하는 방식이며 T 메모리 구조라 부른다. 자바는 대표적인 객체지향 언어이므로 T 메모리 구조를 사용한다.

 

Static 영역

자바에서 Static을 사용하는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미한다. 일반적으로 우리가 만든 Class는 Static 영역에 생성되고, new 연산을 통해 생성한 객체는 Heap영역에 생성된다. 뒤에서 다시 얘기할 내용이지만 Heap영역의 메모리는 Garbage Collector를 통해 수시로 관리 받지만 Static 키워드를 통해 Static영역에 할당된 메모리는 Garbege Collector의 관리 영역 밖에 존재한다. 그러므로 Static의 남발은 시스템 퍼포먼스에 악영향을 줄 수 있다.

 

 

...작성중

 

 

참고

 

[Java] static변수와 static 메소드

1. Static 정리 Java에서 Static 키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미합니다. 이를 정확히 이해하기 위해서는 메모리 영역에 대한 이해가 필

mangkyu.tistory.com