👀 들어가기 전에Java에는 배열이 있고, List라는 컬렉션 추상화가 있다.그리고 List의 대표 구현체로 LinkedList와 ArrayList가 따로 존재한다.흔히ArrayList는 조회가 빠르고, LinkedList는 삽입/삭제가 빠르다 라고 말하지만, 실무에서는 꼭 이게 정답이지 않는 경우까지 생겨 깊이있게 파보았다.이 글에서는 JVM 메모리 모델 + CPU 캐시 + 객체 구조까지 포함해서 왜 대부분의 상황에서 ArrayList를 기본값으로 사용하는지 정리해본다.👀 본론배열 : 진짜 Random Access가 가능한 이유배열은 연속 메모리에 놓인다.그래서 인덱스 접근은 단순 산술로 끝나게 된다.addr(arr[i]) = base + i * elementSize 이렇게 산술로 끝나다 보니 O(..
[Java] LinkedList vs. ArrayList : 메모리와 캐시로 이해하기
👀 들어가기 전에Java에는 배열이 있고, List라는 컬렉션 추상화가 있다.그리고 List의 대표 구현체로 LinkedList와 ArrayList가 따로 존재한다.흔히ArrayList는 조회가 빠르고, LinkedList는 삽입/삭제가 빠르다 라고 말하지만, 실무에서는 꼭 이게 정답이지 않는 경우까지 생겨 깊이있게 파보았다.이 글에서는 JVM 메모리 모델 + CPU 캐시 + 객체 구조까지 포함해서 왜 대부분의 상황에서 ArrayList를 기본값으로 사용하는지 정리해본다.👀 본론배열 : 진짜 Random Access가 가능한 이유배열은 연속 메모리에 놓인다.그래서 인덱스 접근은 단순 산술로 끝나게 된다.addr(arr[i]) = base + i * elementSize 이렇게 산술로 끝나다 보니 O(..
2026.01.01