전체 글136 가비지 컬렉션(GC)은 어떻게 메모리를 정리할까 컴퓨터 관련 내용을 공부하다 보면 “메모리를 자동으로 관리해준다”는 말을 자주 보게 된다. 처음에는 이게 그냥 편리한 기능 정도로만 느껴졌다. 그런데 힙 메모리와 스택 메모리 개념을 이해하고 나니까 자연스럽게 궁금해졌다. “그럼 사용이 끝난 메모리는 누가 치우는 거지?” 나도 예전에는 프로그램을 종료하면 메모리가 그냥 자동으로 전부 정리되는 줄 알았다. 하지만 실제로는 프로그램이 실행되는 도중에도 계속 메모리를 정리하는 과정이 필요했고, 그 역할을 하는 게 바로 가비지 컬렉션(GC)이었다. 가비지 컬렉션은 더 이상 사용하지 않는 메모리를 자동으로 정리한다가비지 컬렉션의 가장 핵심적인 역할은 “더 이상 사용하지 않는 객체를 찾아 메모리를 회수하는 것”이다. 특히 힙 메모리에 저장된 데이터들은 사용이 끝났다.. 2026. 5. 9. 힙(Heap) 메모리는 무엇일까 (스택 vs 힙 차이) 콜 스택까지 이해하고 나면 자연스럽게 “그럼 데이터는 어디에 저장되는 걸까?”라는 질문이 생긴다. 나도 처음에는 스택이랑 힙이라는 단어를 많이 봤지만, 그냥 외워야 하는 개념 정도로만 생각했다. 그런데 실제로 코드를 이해하려고 보니까, 이 둘의 차이를 모르면 흐름 자체가 잘 안 잡히는 느낌이었다. 그래서 이번에는 스택과 힙 메모리를 같이 정리해보려고 한다. 스택은 빠르고 단순하지만, 크기가 제한된 메모리 영역이다스택 메모리는 함수 호출과 관련된 데이터를 저장하는 공간이다. 우리가 앞에서 봤던 콜 스택도 이 스택 메모리를 기반으로 동작한다. 함수가 호출될 때마다 지역 변수나 함수 정보가 스택에 쌓이고, 함수 실행이 끝나면 자동으로 제거된다.이 구조의 가장 큰 장점은 속도다. 스택은 push, pop 같은 .. 2026. 5. 8. 콜 스택(Call Stack)은 어떻게 동작할까 이벤트 루프까지 이해하고 나면 자연스럽게 따라오는 개념이 있다. 바로 콜 스택(Call Stack)이다. 사실 콜 스택은 특별한 기술이라기보다, 프로그램이 실행되는 가장 기본적인 구조에 가깝다. 나도 처음에는 그냥 “함수 실행 순서 관리하는 거겠지” 정도로만 생각했는데, 이걸 제대로 이해하고 나니까 코드가 어떻게 돌아가는지 훨씬 또렷하게 보이기 시작했다. 콜 스택은 함수 실행 순서를 관리하는 구조다콜 스택은 말 그대로 ‘스택(Stack)’ 구조를 사용한다. 스택은 가장 나중에 들어온 것이 가장 먼저 나가는 구조(LIFO, Last In First Out)다. 이 구조를 이용해서 함수 실행 순서를 관리한다.예를 들어 함수 A 안에서 함수 B를 호출하면, 먼저 A가 실행되다가 멈추고 B가 스택 위에 쌓인다... 2026. 5. 8. 이벤트 루프(Event Loop)는 어떻게 동작할까 동기와 비동기 개념을 이해하고 나면 자연스럽게 한 가지 의문이 남는다. “그럼 비동기는 도대체 어떻게 동시에 처리되는 것처럼 보일까?” 나도 처음에는 이게 가장 헷갈렸다. 코드상으로는 하나씩 실행되는 것 같은데, 실제로는 여러 작업이 동시에 돌아가는 것처럼 느껴졌기 때문이다. 이걸 가능하게 해주는 핵심 구조가 바로 이벤트 루프(Event Loop)다. 이벤트 루프는 작업을 ‘순서대로’ 처리하면서도 동시에 실행되는 것처럼 보이게 만든다많은 사람들이 이벤트 루프를 들으면 멀티스레딩처럼 여러 작업을 동시에 처리하는 구조라고 생각하기 쉽다. 하지만 실제로는 하나의 스레드에서 동작하는 경우가 많다. 핵심은 “동시에 처리하는 것”이 아니라 “빠르게 번갈아 처리하는 것”이다.이벤트 루프는 계속 반복하면서 실행할 작업.. 2026. 5. 7. 동기(Sync)와 비동기(Async)는 무엇이 다를까 개발이나 서버 관련 내용을 조금만 보다 보면 “동기”, “비동기”라는 말을 자주 보게 된다. 처음에는 그냥 비슷한 개념처럼 느껴져서 크게 신경 쓰지 않았는데, 막상 실제 흐름을 이해하려고 보니까 이 차이가 생각보다 크다는 걸 알게 됐다. 나도 처음에는 “비동기가 더 빠른 거 아닌가?” 정도로만 생각했었는데, 상황에 따라 완전히 다르게 동작한다는 걸 경험하면서 개념이 확 잡히기 시작했다. 동기는 작업이 끝날 때까지 기다리는 방식이다동기 방식은 말 그대로 순서를 지키면서 하나씩 처리하는 구조다. 어떤 작업을 요청하면, 그 작업이 끝날 때까지 다음 작업으로 넘어가지 않는다. 예를 들어 파일을 읽거나 서버에 요청을 보냈을 때, 결과가 올 때까지 계속 기다리는 방식이다.이 방식의 장점은 단순하고 이해하기 쉽다는 .. 2026. 5. 7. CPU 스케줄러는 어떻게 일을 나눌까 (운영체제가 작업을 분배하는 방식) 컨텍스트 스위칭까지 이해하고 나면 자연스럽게 다음 질문이 생긴다. “그럼 CPU는 어떤 작업을 먼저 처리할지 어떻게 결정하는 걸까?” 나도 처음에는 그냥 순서대로 처리하는 줄 알았다. 그런데 실제로는 운영체제가 꽤 복잡한 기준을 가지고 작업을 분배하고 있었다. 이 역할을 하는 것이 바로 CPU 스케줄러다. CPU 스케줄러는 여러 작업 중에서 ‘지금 실행할 것’을 선택한다컴퓨터에서는 항상 여러 개의 프로그램이 동시에 실행되고 있다. 브라우저, 음악 플레이어, 메신저, 백그라운드 프로그램까지 생각하면 수십 개의 작업이 동시에 돌아간다. 하지만 CPU는 한 번에 하나의 작업만 처리할 수 있다.그래서 어떤 작업을 먼저 실행할지 선택해야 하는데, 이 역할을 하는 것이 CPU 스케줄러다. 쉽게 말하면 “지금 누구 .. 2026. 5. 6. 이전 1 2 3 4 5 6 ··· 23 다음