이전 포스팅에서 Static VS Heap VS Stack
에 대한 내용을 다루었습니다.
세 부분에 대한 이해를 돕기 위해 간단한 예시를 들어보겠습니다.
[ 커피 빨리 마시기 게임 ]
1. 커피머신에서 커피가 제공된다
2. 참가자는 한명씩 나와 커피를 마시는 시간을 측정한다
3. 오른쪽 리스트에서 <랭킹>이 표시된다.
커피머신
과 랭킹 리스트
는 이미 생성이 되어있습니다.
user1
사용자가 참가했습니다.user1
에 대한 정보는 static이 아닌, heap에 저장이 되어야 합니다.
사용자가 마시기 위한 커피
가 생성되었습니다.
new 를 통해 생성된 변수이므로 heap 메모리에 저장됩니다.
user1
이 커피
를 마시는데 4초
가 걸렸습니다.
커피를 마신다라는 행위(함수)를 통해 4초라는 변수값이 생성되었고, 이는 잠시 stack에 저장됩니다.
static으로 선언되어있던 랭킹 list에 user 1
이 커피를 마신 속도 4초
가 저장이 되며,
첫번째로 4초
라는 정보가 stack에서 제거됩니다.
두번째로는 가비지 콜렉터에 의해 더이상 사용되지 않는 값인 커피
가 삭제됩니다
마지막으로 user 1
이 게임에서 나가며 heap에 저장되어있던 정보가 삭제됩니다.
다음으로 user 2
가 게임에 참가하게 되며 해당 유저의 정보는 heap에 저장이 됩니다.
위의 게임시작 1,2,3 이 반복이 되며 랭킹 list에 값이 적혀집니다.