[JAVA] JVM 프로그램의 메모리 영역[JAVA] JVM 프로그램의 메모리 영역
Posted at 2020. 4. 27. 20:19 | Posted in JAVA반응형
출처 : Do it! 코틀린 프로그래밍
프로그램이 사용하는 메모리 영역에는 여러가지가 있다.
명령어가 들어가는 코드 영역과,
프로그램이 컴파일되면 문자열이나 정적 변수나 문자열 등이 들어가는 정적 메모리 영역인 데이터( Data ) 영역이 존재한다.
JVM에서는 이 영역을 메서드 정적 영역( Method Static Area )으로도 부룬다.
또 실행중 생성되는 객체는 동적 메모리 영역인 힙( Heap ) 이라고 불리는 곳에서 만들어 진다.
추가적으로 코드 블록인 중괄호( { } ) 안에 사용한 변수나 함수 호출 블록은 임시로 쓰이는 메모리 영역인 스택( Stack )에 들어가며,
중괄호 블록이 끝나면 임시로 사용한 변수는 스택에 제거된다.
데이터 영역은 정해져 있어서 실행중에 오류가 날 가능성은 적다.
힙과 스택은 프로그램이 동작하는 도중에 위 그림의 화살표 방향으로 채워지기 때문에 너무 많은 메모리를 할당하는 객체가 있다면
Out of Memory 오류가 날 수 있고, 함수 호출이 재귀적으로 너무 많이 일어나면
Stack Overflow 오류가 발생할 수 있다.
JVM을 사용하는 프로그램에는 동적 메모리 영역의 객체가 사용된 뒤 아무 참조가 없으면 자동으로 삭제하는
GC( Garbase Collector )가 존재한다.
GC란 일종의 쓰레기 청소부 역할을 해서, 우리도 모르게 쓸모없는 객체를 치워 주는 일을 한다고 생각하면 된다.
반응형
'JAVA' 카테고리의 다른 글
[JAVA] Windows 10 컴퓨터, JAVA 8 버전 설치하기 (0) | 2020.07.18 |
---|---|
[JAVA] 자바 개발자로서 알아야 하는 것들 (3) | 2020.02.18 |
[JAVA] 객체지향 개발과 관련 용어 (0) | 2019.12.27 |
[JAVA] Java의 역사와 JVM, 알아두어야 하는 상식 (0) | 2019.11.06 |
[JAVA] JAVA에서 Map 이란? (0) | 2018.07.17 |