Stack / Heap

박상준·2022년 8월 18일
0

면접지식

목록 보기
5/32

Stack / Heap

STACK

  • 원시 타입의 데이터가 값과 저장 (int, byte, double…)
  • HEAP 영역에 생성된 Object 타입의 데이터의 참조값이 저장된다.
  • 함수가 호출될 때 사용하는 메모리. 기능 수행이 끝나면 자동으로 반환되는 메모리

HEAP

  • Object 타입의 데이터가 저장
  • 애플리케이션의 모든 메모리 중 STACK을 제외한 부분
  • 자동으로 관리되지 않는 메모리 영역
    • CPU가 엄격하게 관리하지 않습니다.
    • 그로인해 메모리의 누수 발생 → GC로 해당 누수 관리

STACK - 코드로

함수가 호출되어 매개변수로 해당 값이 넘어가면 스코프가 변경됨

→ n2와 n1 | num2와 num1 은 결국 다른 데이터가 된다.

함수 호출이 종료되면 해당 지역변수들은 전부 스택에서 사라지게된다.

메인함수도 종료된다면 스택은 전부 비워지게된다.

HEAP - 코드로

String 은 Object를 할당받아 상속되는 것이기에 Heap 영역에 할당

Stack 안의 name 이라는 지역변수는 Heap영역의 String 을 Reference하게 됩니다.

GC

지역변수 url을 += 연산자로 새로운 String 을 Reference하게 됩니다.

그러면 기존의 [https://를](https://를) Reference하고 있는 변수가 없기에

해당 String은 unreachable object가 되게 됩니다.

그러면 해당 unreachable object 는 GC에 의해 정리됩니다.

profile
이전 블로그 : https://oth3410.tistory.com/

0개의 댓글