← 질문 목록
#356깊이 0

큰 파일을 통째로 읽으면 무엇이 문제인가?

운영체제기초메모리성능

파일 크기에 비례해, 대개는 그보다 더 메모리를 잡는다. 남은 것을 넘기면 할당에 실패하거나 프로세스가 강제로 끝난다.

순서통째로 읽기흘려 읽기
1전체를 메모리에 올린다한 조각을 읽는다
2다 올라올 때까지 기다린다그 조각을 처리해 내보낸다
3처리한다다음 조각을 읽는다
4내보낸다계속 반복한다

더 든다고 적은 이유가 있다. 읽어 온 바이트를 문자열이나 객체로 바꾸면 그만큼이 또 든다. 파일 크기만 보고 여유를 재면 모자란다.

주의

메모리가 넉넉해도 값을 치른다. 같은 일을 동시에 열 명이 하면 열 배를 잡는다. 혼자 시험하면 이 한계가 안 보인다.

첫 응답도 늦어진다. 통째로 읽는 쪽은 마지막 바이트가 도착해야 일을 시작하는데, 흘려 읽으면 첫 조각부터 내보낼 수 있다.

그래서 업로드와 다운로드, 큰 결과 집합은 흘려 보낸다. 읽는 쪽과 쓰는 쪽을 이어 두고 조각 단위로 넘긴다.

정렬처럼 전체를 봐야 하는 일은 흘려 보내기만으로 안 된다. 들어가는 만큼씩 나눠 처리하고 나중에 합치는 방식으로 바꾼다.

메모리 사용량이 입력 크기에 비례하는지 봐야 한다. 비례하면 입력이 커질 때 그대로 무너진다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

큰 파일을 통째로 읽으면 무엇이 문제인가?