초기 용량을 '주면 좋다' 수준의 팁으로 외웠는지가 아니라, 리사이즈·재해싱 메커니즘과 연결해서 설명할 수 있는지 가르려는 질문이다.
ArrayList·HashMap 같은 가변 컬렉션은 들어 있는 원소가 내부 용량을 넘어서면, 더 큰 배열을 만들어 기존 데이터를 복사하는 리사이징을 일으킨다. HashMap은 여기에 더해 새 배열 크기에 맞춰 해시 버킷을 다시 계산하는 재해싱까지 같이 한다. 예상 크기를 알고 생성자에서 초기 용량을 지정하면 이 재할당·재해싱 횟수를 미리 줄여 CPU와 GC 부담을 안정화할 수 있다. HashMap은 load factor와 threshold(capacity × load factor)를 기준으로 리사이즈가 일어나므로, '엔트리 수 ÷ load factor'를 올림 한 값을 초기 용량으로 잡는 식으로 산정한다.
초기 용량을 지정해 배치 처리 시간을 줄여 본 경험이 있다면 리사이즈 비용 사례로 연결할 수 있다
GC 로그·heap 사용량 변화를 비교해 본 적이 있다면 컬렉션 설정이 운영 지표에 어떻게 묻어나는지 말할 수 있다
데이터 분포를 보고 load factor를 다르게 잡아 본 경험이 있다면 메모리·충돌률 트레이드오프 관점으로 엮을 수 있다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.