[Java] Stack / Heap ?

원준·2023년 7월 10일
0

Java

목록 보기
10/19

Stack?

  • 일반적으로 메모리에 순차적으로 쌓여서 사용되는 공간을 Stack이라고 한다.
  • main의 함수를 기준으로 코드가 위에서 아래로 실행되면서, 사용이 종료된 공간에 대해 삭제하는 것을 Stack이라고 한다.

예시)

  • 변수 선언, 메소드 사용 등 main에 의해 사용되는 모든 것들이 stack에 쌓이고 사용되고 삭제된다.
int a = 10;
int b = 15;

System.out.println("출력");
  1. 변수 a, b가 Stack에 들어감 (순차적으로 한개씩)

  2. println 메소드 호출

  3. println 메소드 메시지 출력 후 메모리 삭제

  4. main 함수 종료로 인한 Stack 삭제

Heap?

  • 클래스를 통해 객체를 만들어 따로 저장할 수 있게 해주는 공간.
  • 객체를 만들때 변수는 전부 Heap에 저장되서 불러올때 가르키는 형태라고 보면된다.
    • 쉽게 생각하면 포인터랑 비슷하다고 보면된다.

예시)

// Student 클래스에 변수와 메서드가 따로 존재한다 가정한다.

Student st = new Student();

st.setEng(15);
st.print();
  1. new 객체 생성

  2. Setter 함수 사용으로 멤버 변수 변경

  3. 함수 사용 이후 Stack 삭제

  4. Student 메서드 print() 사용

    • print() 메서드에는 System.out.println() 함수만 존재한다.
  5. Student print() 메서드 사용 후 Stack 삭제

  6. Main 함수 종료 후 Stack 메모리 객체 삭제

  7. Heap과 연결이 끊겨 아무것도 못하는 상태의 데이터 들은 Garbage Collection이 주기적으로 찾아서 삭제해준다.

    • JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해주기 때문
profile
공부해보자

0개의 댓글

관련 채용 정보