[Java] Arrays.copyOf가 얕은 복사인 이유 — 어셈블리까지 내려가기
·
Java
ArrayList가 가득 차면 어떻게 동작할까?내부 배열이 1.5배로 리사이징되면서 `Arrays.copyOf()`로 기존 요소를 복사한다.이때 복사된 배열은 원본과 같은 객체를 참조한다. 얕은 복사이기 때문이다. 그런데 얕은 복사인 걸 어떻게 알 수 있을까?그걸 확인하기 위해 JDK 소스부터 HotSpot 소스, 그리고 어셈블리 stub까지 따라가 봤다.전체 호출 체인 ArrayList.add(E) → ArrayList.grow() → Arrays.copyOf(T[], int) → System.arraycopy(...) // native 진입점 → JVM_ArrayCopy (jvm.cpp) → ObjArrayKlas..