Java Part3 하 2.3 Buffer IO vs Non buffered IO
- 버퍼드 IO와 넌버퍼드 IO는 입출력 시 메모리(버퍼) 사용 여부에 따라 구분됩니다. 🧠
- 버퍼는 IT에서 완충 장치 역할을 하는 메모리 공간을 의미하며, 입출력 요청을 모아 처리하는 데 사용됩니다. 💾
- 일반적으로 버퍼드 IO는 작은 데이터를 자주 입출력할 때 더 효율적입니다. 🚀
- 버퍼드 IO는 여러 입출력 요청을 모아 한 번에 처리하여 주변 기기(하드디스크 등)와의 대기 시간(웨이트 타임)을 줄여 CPU의 유휴 시간을 최소화합니다. ⏱️
- 넌버퍼드 IO는 각 입출력 요청을 즉시 처리하며, 이로 인해 작은 데이터에 대한 잦은 요청 시 성능 저하가 발생할 수 있습니다. 🐢
- 버퍼드 IO의 비유는 '묶음 배송'과 같아서, 여러 건을 한 번에 처리하여 비용(시간)을 절감하는 원리입니다. 📦
- 넌버퍼드 IO는 실시간 반응성이나 즉각적인 데이터 영속성이 필수적인 경우에 사용됩니다 (예: FPS 게임의 키보드 입력 처리). 🎮
- 버퍼드 IO 사용 시 프로그램에서 '쓰기 성공'으로 보고되어도 실제 물리 디스크에 즉시 기록되지 않고 버퍼에만 저장될 수 있다는 단점이 있습니다. ⚠️
- 버퍼드/넌버퍼드 IO 개념은 블로킹/넌블로킹 IO와는 전혀 관련 없는 별개의 주제입니다. 🚫
- 이러한 IO 개념 이해는 자바에서 효율적인 IO 관련 API를 사용하고 애플리케이션 성능을 최적화하는 데 필수적입니다. 💡
데브허브 | DEVHUB | Java Part3 하 2.3 Buffer IO vs Non buffered IO