기초 지식 정리

메모리 구조 22.08.06

연93 2022. 8. 6. 19:50

https://jinshine.github.io/2018/05/17/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B8%B0%EC%B4%88/%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0/(참고주소)

 

 

메모리 영역

가상머신은 운영체제로부터 메모리 영역을 할당 받아 효율적으로 관리한다.

그렇기 때문에 영역을 나눠 효율적으로 관리한다

 

메소드 영역

소스 파일이 컴파일 되면서 생성되는 코드로 가상머신이 실행할 수 있는

프로세스의 주소 공간은 코드(code), 데이터(data), 스택(stack), 힙(heap) 영역으로 구성된다.

 

이러한 주소 공간을 우리는 가상 메모리 (또는 논리적 메모리: logical memory)라고 부른다.

 

code 영역

사용자가 작성한 프로그램 함수들의 코드가 CPU에서 수행할 수 있는 기계어 명령 형태로 변환되어 저장되는 공간

 컴파일(compile) 타임에 결정되고 중간에 코드를 바꿀 수 없게 Read-Only 로 되어있다.

 

data 영역

전역 변수 또는 static 변수 등 프로그램이 사용하는 데이터를 저장하는 공간

 전역 변수또는static 값을 참조한 코드는 컴파일이 완료되면 data 영역의 주소값을 가르키도록 바뀐다. 전역변수가 변경 될 수도 있어 Read-Write로 되어있다.

 

stack 영역

호출된 함수의 수행을 마치고 복귀할 주소데이터(지역변수, 매개변수, 리턴값 등)를 임시로 저장하는 공간

 이 영역은 함수 호출시 기록하고 함수의 수행이 완료되면 사라진다. 메커니즘은 자료구조(stack)에서 배운 LIFO(Last In First Out) 방법을 따른다. 컴파일 시 stack 영역의 크기가 결정되기 때문에 무한정 할당 할 수 없다. 따라서 재귀함수가 반복해서 호출되거나 함수가 지역변수를 메모리를 초과할 정도로 너무 많이 가지고 있다면stack overflow가 발생한다.

 

heap 영역

프로그래머가 필요할 때마다 사용하는 메모리 영역

heap 영역은 런타임에 결정된다. 자바에서는 객체가 heap영역에 생성되고 GC에 의해 정리된다.

출처: https://zangzangs.tistory.com/107 [장장스:티스토리]

'기초 지식 정리' 카테고리의 다른 글

테이터 타입 분류  (0) 2022.09.06
CLI - command-line interface 명령어  (0) 2022.09.06
JAVA 데이터 타입 구분 (참조,값)  (0) 2022.09.05
OSI 7 계층  (0) 2022.07.31
HTTP.Html  (0) 2022.07.30