728x90
반응형
안녕하세요. 최근 질문 중에 "Go에서는 defer가 있는데 왜 GC를 사용해야 할까요?"라는 질문이 있었어요.
defer와 GC는 하는 역할이 서로 다르기 때문에 '이건 무슨 내용의 질문이지?'하며 한 동안 벙쪄서 아무 말도 하지 못했죠.
그 후 그 질문에 대한 답변을 해주기 위해 공부했던 것들을 정리 해봅니다.
역시 Go에서의 defer와 가비지 컬렉터(GC)는 서로 다른 개념이였어요. 즉, 그들 간에 직접적인 관련은 없었죠.
Go를 사용해보신 분들이라면 defer는 함수 내에서 특정 코드를 지연 실행시키는 데 사용되는 기능이며, 주로 리소스 정리나 오류 처리에 유용하고, 가비지 컬렉터는 메모리 관리를 자동으로 처리하여 더 이상 사용되지 않는 객체를 탐지하고 해제하여 메모리 누수를 방지해주는 도구라는 사실은 알고 계실거에요.
그렇기 때문에 defer의 존재 여부와 가비지 컬렉터의 사용은 defer는 코드의 가독성과 정리 작업의 자동화를 위해 사용되고, 가비지 컬렉터는 메모리 관리의 자동화를 위해 사용되기 때문에 defer의 존재 여부와 가비지 컬렉터의 사용은 상이한 목적을 가지고 있다는 것이 결론이였습니다.
728x90
반응형
'프로그래밍(Basic) > Golang' 카테고리의 다른 글
Go - GC에 대해 알아봅시다. (0) | 2023.08.14 |
---|---|
Go 1.20 릴리즈 요약 (0) | 2023.05.17 |
Go 1.19 릴리즈 (0) | 2023.05.16 |
[바미] Go의 signal에 대해 알아봅시다. (0) | 2022.04.11 |
[바미] Beyond OOP에 대해 알아보자. (0) | 2021.03.02 |