일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- java.lang.IllegalStateException: Ambiguous mapping found. Cannot map 'homeController' bean method
- 정적할당
- 컴파일
- 가비지컬렉터
- 1490원
- git오류
- 육회초밥
- 알리익스프레스
- 아이패드거치대
- 컴파일타임
- 오산 회전초밥
- 오산공영주차장
- 오산주차장
- 바이너리코드
- 기계어
- aliexpress
- 런타임에러
- Java
- Please enter a commit message to explain why this merge is necessary
- yml유효성
- 오산초밥
- yml파일
- 형제초밥
- 타코와사비
- 동적할당
- git pull
- 병목현상
- 컴파일에러
- 바이트코드
- RAM
- Today
- Total
개발 & 일상
Java 의 정적할당(static) / 동적할당(dynamic) 본문
동적할당
메모리 동적할당이란, 프로그램을 실행하는 중 필요한 메모리 공간을 할당하는 것을 말한다.
사용이 끝나면 운영체제가 사용 할 수 있도록 반납하고 다음 요구시 재 할당을 받을 수 있다.
동적으로 할당된 메모리 공간은 프로그래머가 직접 해제하거나 가비지 컬렉터에 의해 해제된다.
java 에서는 new 연산자 를 할때마다 힙 영역에 할당되며 gc의 대상이 된다.
동적 할당은 프로세스의 힙영역에서 할당하므로 프로세스가 종료되면 운영 체제에 메모리 리소스가 반납되므로 해제된다
int[] a;
a = new int[5];
new 연산자 등을 사용해 프로그램 도중 필요한 양 만큼 할당하는 것 heap 메모리에 저장된다.
(프로그램 종료시 garbage collector가 정리한다)
정적할당
메모리 정적할당은, 메모리의 크기가 하드 코딩되어 있기 때문에,
프로그램이 시작 될 때 필요한 메모리의 크기를 예상해서 미리 할당(확보) 한다는 특징을 갖는다.
정적할당된 메모리의 경우 프로그램을 실행하는 도중에는 해제되지 않고 있다가, 프로그램 종료 시 운영체제가 회수해 간다.
메모리를 미리 stack memory에 확보해둔다.
int[] a = new int[10];
함수종료될때까지 안쓰는 메모리가 낭비된다.
- 함수 호출이 끝나면 사라진다.
가비지컬렉터(Garbage Coolector)
1. 메모리 할당
2. 사용 중인 메모리 인식
3. 사용하지 않는 메모리인식
'주소를 잃어버려서 사용할 수 없는 메모리', '정리되지 않은 메모리'. 즉, 쓰레기를 가비지라 칭한다.
(ex - 메모리를 가지고 있으나 수행이 완료되어 앞으로 사용하지 않고, 연결된 리모콘이 없는 객체)
가비지콜렉터는 이런 가비지들을 메모리에서 해제 시켜 다른 용도로 사용 할 수 있게 해주는 프로그램을 말한다.
C++와 같은 다른 언어에서는 사용하지 않을 객체의 메모리를 직접 해제해주어야 하지만
자바에서는 가비지컬렉터라는 알고리즘을 사용해 메모리를 관리한다.
아직 이해안감...
'💻 개발공부 > 😈 개발지식' 카테고리의 다른 글
RAM 이란?? && S RAM vs D RAM (0) | 2023.01.16 |
---|---|
빌드(Build)란? (1) | 2023.01.14 |
컴파일(Compile)이란? (0) | 2023.01.14 |
런타임(Run Time) 이란? & 컴파일타임 (1) | 2023.01.14 |
바이트 코드와 바이너리코드 & 기계어 (0) | 2023.01.14 |