stop the world(STW)는 왜 하는 것일까?

유수민·2022년 11월 24일
1

대화안의 지식

목록 보기
3/9
post-thumbnail

이번에 친구들과 이야기한 주제는 '왜 stop the world를 해야 하는가?'이다.
자바에서는 gc가 돌아갈때마다 STW 즉 stop the world가 발생하여 애플리케이션 스레드들이 잠시 멈춘다. 따라서 gc가 자주 발생하지 않아야하고 발생하더라도 이 멈추는 시간을 최대한 줄이는 방법을 연구해왔다.
근데 왜 멈춰야 할까? 손해가 있는데도 왜??

이유는 애플리케이션 스레드가 멈추어야 현재 메모리 상에서 살아있는 객체를 정확히 식별할 수 있기 때문이다. 만약 애플리케이션의 스레드를 멈추지 않는다면, 애플리케이션의 동작에 따라 변화하는 객체들의 상태를 빠르게 반영하지 못했을 수 있다. 따라서 stop the world를 통해 애플리케이션 스레드를 잠시 멈춤으로써 객체들의 상태를 완전히 반영하는 것이다.
왜 멈추는가에 대해 전혀 생각하지 못했었는데 친구들과 대화를 통해 또 한번 깨닫는 순간이었다.!!

참고)

profile
배우는 것이 즐겁다!

0개의 댓글