009_Static, Heap

Dec 13, 2023
009_Static, Heap

Static (정적 할당)

  • 생명 주기가 가장 길다. (main이 종료되면 끝이 난다.)
  • 프로그램 실행과 동시에 공간을 할당하여 저장한다.
💡
JVM 실행 (JVM의 할당 메모리 공간이 3개의 공간으로 쪼개진다) 1. class를 찾는다. 2. static을 찾는다. (static이 있어야 메모리에 공간을 추가한다) - 특징 : main이 실행되기 전에 찾는다. 3. static class별로 나눈다.

Heap (동적 할당)

  • 여러 번 띄우기 때문에 class로 찾을 수 없어 heap은 영역을 가르키는 변수를 선언해야한다.
  • new를 붙여서 heap 공간에 저장을 한다. (동적 할당)
💡
정적과 동적이 있는 이유? 메모리를 효율적으로 사용하기 위해서 이다.

커스텀 변수

  • 다양한 자료형을 한 변수 내에 선언이 불가능할 때 사용한다.
  • int, char 등 ‘프리미티브 자료형(원시 자료형)’을 여러 개 사용이 가능하다.
  • Class를 선언하여 하나에 묶는 방법이다.

예제

Static 예제
package ex04; // 커스텀 변수 class Person1{ static int age = 20; static char gender = '여'; } public class MemEx01 { public static void main(String[] args) { System.out.println(Person1.age); System.out.println(Person1.gender); } }
Heap 예제
package ex04; // 커스텀 변수 class Person2{ int age = 10; char gender = '남'; } public class MemEx02 { public static void main(String[] args) { System.out.println("1년 지남"); System.out.println("2년 지남"); System.out.println("3년 지남"); Person2 p = new Person2(); // new 하면 class의 내용이 heap(동적할당)에 뜬다. / 커스텀 변수이기 때문에 내가 만든 변수 이름으로 한다. System.out.println(p.age); System.out.println(p.gender); System.out.println("메인 종료"); } }
그림 예제
notion image
Share article
RSSPowered by inblog