자바 최적화
11. 자바 언어 성능 향상 기법
참조형 필드는 힙에 레퍼런스로 저장됩니다. 객체가 순차적으로 저장된다고 대충 말하지만, 사실 컨테이너에 저장되는 건 객체 자신이 아니라, 객체를 가리키는 레퍼런스입니다. 그러므로 C/C++ 형식의 배열이나 벡터를 사용하는 것만큼 성능을 얻을 수는 없습니다.ArrayList는 고정 크기 배열에 기반한 리스트입니다. 배킹 배열의 최대 크기만큼 원소를 추가할 수 있고 이 배열이 꽉 차면 더 큰 배열을 새로 할당한 다음 기존 값을 복사합니다.LinkedList의 고유 기능이 꼭 필요한 경우가 아니라면, 특히 랜덤 엑세스가 필요한 알고리즘을 구사할 떄는 ArrayList를 권장합니다. HashMap은 처음에는 버킷 엔트리를 리스트에 저장합니다. 값을 찾아려면 키 해시값을 계산하고 equals() 메서드로 리스트에서 해당 키를 찾습니다. 키를 해시하고 동등성을 기준으로 리스트에서 값을 찾는 매커니즘으로 키 중복은 허용되지 않습니다. 같은 기를 넣으면 원래 HashMap에 있던 키를 치환합니다.HashMap의 용량을 현재 생성된 버킷의 수(디폴트 16)를, loadFactor는 버킷 용량을 자동 증가(2배) 시키는 한게치 입니다. 용량을 2배 늘리고 저장된 데이터를 재배치한 다음, 해시를 다시 계산하는 과정을 재해시rehash라 합니다.12. 동시 성능 기법
Unsafe
java.util.concurrent 락
세마포어
Fork/Join
액터 기반 기법
Reference
Last updated