2cc6eff2dd
- Raw_Data 자동 정리 산출물이 각 도메인 From_RawData/ 로 편입, 00_INDEX 연결 갱신 - 컴퓨터_이사_체크리스트.md 추가 (두뇌-상대 경로 규약 v2.2.304 — 새 컴퓨터에서 바꿀 절대 경로는 localBrainPath 1개) - Astra 세션 산출물(에피소드 기억·기능 인벤토리) 갱신 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
5.8 KiB
5.8 KiB
id, title, category, status, verification_status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, created_at, updated_at, review_reason, merge_history, tags, raw_sources, applied_in, github_commit
| id | title | category | status | verification_status | canonical_id | aliases | duplicate_of | source_trust_level | confidence_score | created_at | updated_at | review_reason | merge_history | tags | raw_sources | applied_in | github_commit | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| stack-overflow | Stack Overflow | Architecture | draft | conceptual |
|
A | 0.90 | 2026-07-11 | 2026-07-11 |
|
|
Stack Overflow
🎯 한 줄 통찰 (One-line insight)
스택 오버플로우(Stack Overflow)는 시스템이나 브라우저에 할당된 콜 스택(Call Stack)의 고정된 크기 한도를 초과하여 실행 컨텍스트(Execution Context)가 무한히 적재될 때 발생하는 치명적인 메모리 초과 에러이다.
🧠 핵심 개념 (Core concepts)
- 콜 스택 (Call Stack): 자바스크립트 엔진이 전역 및 함수 실행 컨텍스트의 흐름을 추적하기 위해 사용하는 런타임 스택 구조.
- 실행 컨텍스트 (Execution Context): 스크립트 코드의 변환 및 실행을 처리하는 환경으로, 함수 호출 시 스택에 적재되는 단위.
- 고정된 스택 크기 (Fixed Stack Size): 시스템 및 브라우저 환경에 따라 종속적으로 결정되는 콜 스택의 물리적 한계용량.
- 기저 조건 없는 재귀 (Recursion without base condition): 종료 시점 없이 함수가 자신을 계속 호출하여 스택 오버플로우를 유발하는 주된 원인.
🧩 추출된 패턴 (Extracted patterns)
- 컨텍스트 누적 패턴: 함수가 호출되면 해당 실행 컨텍스트가 콜 스택 최상단에 푸시(Push)되고 완료 시 팝(Pop)되어야 하나, 특정 이유(예: 무한 재귀)로 완료되지 못하고 계속 푸시만 발생하면 시스템의 한계치에 도달해 에러를 뱉어낸다.
📖 세부 내용 (Details)
- 자바스크립트 엔진은 전역(Global) 및 함수(Function) 컨텍스트를 포함한 모든 실행 컨텍스트의 궤적을 추적하기 위해 콜 스택(Call Stack)을 사용한다 [S1]. (콜 스택은 'Execution Context Stack', 'Runtime Stack', 'Machine Stack' 등으로도 불린다 [S1].)
- 함수가 호출될 때마다 새로운 함수 실행 컨텍스트가 생성되어 콜 스택의 최상단에 푸시(push)되며, 함수 내부의 실행이 모두 완료되면 콜 스택에서 제거(pop)된다 [S1].
- 콜 스택은 실행되는 시스템이나 브라우저에 따라 고유의 고정된 크기(fixed size)를 가진다 [S1].
- 만약 콜 스택에 적재되는 실행 컨텍스트의 수가 이 고정된 제한을 초과하게 되면, '스택 오버플로우(Stack overflow)' 에러가 발생하게 된다 [S1].
- 이러한 스택 초과 현상은 주로 함수 실행이 종료되는 기저 조건(base condition)이 없는 재귀 함수(recursive function)를 실행할 때 발생한다 [S1].
⚖️ 모순 및 업데이트 (Contradictions & updates)
소스 내에서 확인되지 않음.
🛠️ 적용 사례 (Applied in summary)
현재 발견된 실제 적용 사례가 없습니다.
💻 코드 패턴 (Code patterns)
소스에 코드 예시 없음.
✅ 검증 상태 및 신뢰도
- 상태: draft
- 검증 단계: conceptual
- 출처 신뢰도: A
- 신뢰 점수: 0.90
- 중복 검사 결과: 신규 생성 (New discovery)
🔗 관련 문서 링크 (Related document links)
상위/유사 개념
- Call Stack — 실행 컨텍스트가 쌓이고 관리되는 물리/논리적 자료 구조 공간.
- Execution Context — 콜 스택에 적재되며 스택 오버플로우 에러를 일으키는 실질적인 메모리 객체.
- Recursion — 기저 조건 부재 시 스택 오버플로우를 직접적으로 유발하는 함수 호출 패턴.
심층 후속 질문 (Deeper Research Questions)
- 브라우저나 운영체제별로 콜 스택의 고정된 크기(Fixed Size)는 구체적으로 어떻게 결정되며 어떤 차이가 있는가?
- 스택 오버플로우를 방지하기 위해 꼬리 재귀 최적화(Tail Call Optimization)가 어떻게 실행 컨텍스트 스택의 낭비를 막는가?
- 자바스크립트의 비동기 처리(이벤트 루프) 과정은 콜 스택 오버플로우 문제와 어떻게 연관되거나 이를 회피하는가?
실무 적용 맥락 (Practical Application Contexts)
- Implementation: 재귀 함수 구현 시 무한 루프를 방지하기 위한 명확한 기저 조건(base condition) 설계.
- System Design: 애플리케이션의 Call Stack 한계를 고려한 메모리 안전적 아키텍처 설계.
- Operation / Maintenance: 런타임 환경에서 발생하는
Maximum call stack size exceeded에러 원인 추적 및 디버깅. - Learning Path: 자바스크립트 엔진의 동작 원리(Execution Context, Call Stack) 및 런타임 에러 메커니즘 학습.
인접 주변 주제 (Adjacent Topics)
- Memory Management — 런타임 시스템에서의 안정적인 메모리 할당 및 가비지 컬렉션(GC) 구조.
- Event Loop — 콜 스택과 태스크 큐 간의 비동기 실행 제어 메커니즘.
🔗 지식 그래프 (Knowledge Graph)
- 상위/루트: context 이해 규칙
- 관련 개념: Call Stack, Execution Context
- 참조 맥락: 실행 컨텍스트의 생명주기와 콜 스택 관리의 물리적 한계를 이해하고 메모리 누수나 무한 재귀 에러를 방지하는 설계 지표로 참조됨.
📚 출처 (Sources)
- [S1] JavaScript Execution Context – How JS Works Behind the Scenes - freeCodeCamp
📝 변경 이력 (Change history)
- 2026-07-11: Initial draft generated via Datacollector_MAC P-Reinforce engine.