[ Spring / SW 캠프 ] Static VS Heap VS Stack 예시

김문경·2024년 1월 28일
0

SW 백엔드 캠프

목록 보기
4/4

이전 포스팅에서 Static VS Heap VS Stack 에 대한 내용을 다루었습니다.
세 부분에 대한 이해를 돕기 위해 간단한 예시를 들어보겠습니다.

[ 커피 빨리 마시기 게임 ]
1. 커피머신에서 커피가 제공된다
2. 참가자는 한명씩 나와 커피를 마시는 시간을 측정한다
3. 오른쪽 리스트에서 <랭킹>이 표시된다.




# 게임 시작 전

  1. 게임이 시작되기 전, 커피머신랭킹 리스트는 이미 생성이 되어있습니다.
    따라서 이들은 main 코드가 시작되기 전, static에 올라가있어야 합니다.




# 게임 시작_1

  1. 게임에 user1 사용자가 참가했습니다.
    게임이 시작된 후 이므로, user1에 대한 정보는 static이 아닌, heap에 저장이 되어야 합니다.




# 게임시작_2

  1. 사용자가 마시기 위한 커피가 생성되었습니다.
    new 를 통해 생성된 변수이므로 heap 메모리에 저장됩니다.

  2. user1커피마시는데 4초가 걸렸습니다.
    커피를 마신다라는 행위(함수)를 통해 4초라는 변수값이 생성되었고, 이는 잠시 stack에 저장됩니다.




# 게임 시작_3

  1. static으로 선언되어있던 랭킹 list에 user 1이 커피를 마신 속도 4초가 저장이 되며,
    첫번째로 4초라는 정보가 stack에서 제거됩니다.

  2. 두번째로는 가비지 콜렉터에 의해 더이상 사용되지 않는 값인 커피가 삭제됩니다

  3. 마지막으로 user 1이 게임에서 나가며 heap에 저장되어있던 정보가 삭제됩니다.




# 게임 시작_4

  1. 다음으로 user 2가 게임에 참가하게 되며 해당 유저의 정보는 heap에 저장이 됩니다.

  2. 위의 게임시작 1,2,3 이 반복이 되며 랭킹 list에 값이 적혀집니다.


0개의 댓글