22.04.20 14:11 작성
·
195
0
안녕하세요 궁금한 것이 생겨 글을 올리게 되었습니다.
저희가 코드를 작성해서 서버에 올렸다는 가정하에 서버는 종료되지 않고 계속 실행 중일 때,
클라이언트1이 어떤 것을 조회하면 해당 api를 타고 메서드 내부에 컬렉션을 사용해서
클라이언트 1에게 결과값을 반환하는데 클라이언트 1이 다시 같은 것을 요청하면 똑같이 동작해서 반환할 경우,
지난 요청에 의해 저장해놓은 데이터가 있다면 새롭게 요청할 때마다 데이터는 계속 쌓이게 되는 것인가요??
메모리관리가 어떻게 되는 것인지 너무 궁금해서 올리게 되었습니다.
친한 지인에게 물어보니 약한 참조를 하거나 new 연산을 할 경우 가바지에 의해 메모리 관리가 된다고 말해주었는데
혹시 실무에서는 어떤 식으로 하는지 조언 부탁드립니다.
항상 좋은 강의 올려주셔서 정말 감사합니다.
답변 2
1
1
안녕하세요, 김어진 님! 공식 서포터즈 codesweaver 입니다.
static 으로 생성한 객체 혹은 스프링 빈으로 관리되는 싱글톤 객체는
애플리케이션을 시작한 순간부터 종료될 때까지 메모리에 상주합니다.
그러나 그 외 new 키워드를 사용해 잠시 쓰는 객체들은 역할이 끝나면
가비지 컬렉터(GC)가 힙 메모리에서 해제하게 됩니다.
추가로, new 키워드를 사용하지 않고 생성하는 변수(원시 변수)는
자신의 유효 범위(스코프)를 벗어나게 되면 즉시 메모리에서 사라집니다.
추가로 '스택메모리와 힙 메모리', '가비지 컬렉터가 필요없는 객체를 판단하는 방법'등을 찾아보시면 재밌는 자료가 많이 나올거에요.
감사합니다.