🌀 무한 반복문, 진짜 괜찮은 걸까?
"while(true) 뭐 어때요, 그냥 계속 돌리면 되는 거 아닌가요?"
단순히 계속 반복한다는 건 쉽지만,
컴퓨터 입장에서는 어마어마한 자원 소모가 될 수 있어요!
지금부터 무한 루프의 위험성과 똑똑한 사용법을 함께 정리해볼게요 😊
⚠️ 무한 루프가 시스템에 미치는 영향
| 항목 | 설명 |
|---|---|
| CPU 폭주 | 조건 없이 계속 반복되면 CPU가 100%를 향해 달립니다. 다른 작업은 버벅이고, 팬이 미친 듯이 돌아가요. |
| 메모리 누수 | 반복문 안에서 객체를 계속 만들거나 리스트에 값을 추가하면, GC가 처리할 틈도 없이 메모리가 가득 찹니다. 결국 OutOfMemoryError가 터질 수도! |
| 앱/시스템 멈춤 | UI가 무한 루프에 묶이면? 사용자는 아무것도 못합니다. 입력도 클릭도 안 먹혀요. (응답 없음!) |
| 비정상 종료 | 에러 처리가 안된 무한 반복은 같은 예외를 계속 발생시켜 로그가 넘치고, 프로그램이 다운되기도 해요. |
| 탈출 조건 없음 | 실수로 빠진 종료 조건 하나가 전체 시스템을 무너뜨릴 수 있어요. 디버깅? 정말 어렵습니다. |
💡 예시 코드로 보는 위험한 무한 루프
while (true) {
System.out.println("계속 출력 중...");
}
단순하지만...
멈추지 않으면 CPU와 메모리를 잠식하는 괴물이 됩니다
💬 반복문을 안전하게 사용하는 습관
| 습관 | 설명 |
|---|---|
| ✅ 명확한 종료 조건 | 반복 횟수나 탈출 조건을 꼭 작성해 주세요. |
| ✅ 자원 사용 최소화 | 루프 안에서 객체를 새로 만들거나, 큰 데이터를 반복해서 불러오지 마세요. |
✅ break, return 적극 활용 |
특정 조건에서 빠져나올 수 있도록 탈출구를 마련해 두세요. |
| ✅ 디버깅용 로그 활용 | 무한 루프가 의심되면 로그를 찍어보는 것도 큰 도움이 됩니다. |
✅ 반복 간 휴식 (sleep) |
자바, 파이썬 등 대부분의 언어는 sleep() 제공 → CPU를 쉬게 해줄 수 있어요. |
🛌 스레드를 쉬게 하자! sleep()의 활용
무한 루프도 휴식이 필요합니다!
계속 반복하면 지치니까, 적당히 쉬어가면서 반복하세요 ☕
✅ 기본 패턴
while (true) {
작업 수행
1초 쉬기 (sleep 1000ms)
}💡 언어별 sleep 예시
| 언어 | 사용 예 |
|---|---|
| Java | Thread.sleep(1000); |
| Python | time.sleep(1) |
| JavaScript | await new Promise(r => setTimeout(r, 1000)) (async) |
🧩 언제 쓰나요?
- ✅ 서버에서 주기적으로 상태 체크할 때
- ✅ 애니메이션, 슬라이더 같은 GUI 처리할 때
- ✅ 센서, 하드웨어 모니터링 시에도 활용돼요
📌 sleep 없이 무한 반복하면?
| 증상 | 설명 |
|---|---|
| 전력 낭비 | 계속해서 CPU가 쉬지 않고 작동해 배터리 소모↑ |
| 팬 과열 | 노트북 팬이 미친 듯이 돌아가고 발열 발생 |
| 시스템 버벅임 | 다른 작업까지 느려지고, 전체 시스템에 악영향 |
☕ 마무리
무한 반복은 컴퓨터의 엔진처럼 강력하지만, 통제되지 않으면 재앙이 될 수 있습니다.
항상 종료 조건과 휴식을 넣어주세요 🙏
'Computer Science > 프로그래밍 언어 기초' 카테고리의 다른 글
| High-Level Language 사용 이유 (1) | 2025.06.09 |
|---|---|
| SOLID란? (0) | 2025.05.15 |
| 변수 섀도잉(Shadowing) (0) | 2025.04.04 |
| OOP(Object-Oriented-Programming) - 객체 지향 프로그래밍 (0) | 2025.03.28 |