728x90
HashMap 이란?
JAVA의 클래스 중 하나이며, Map 인터페이스를 구현한 함수이기에 (key,value) 형태로 데이터를 저장하게 된다. Key 값의 HashCode를 index로 array 값을 저장하기에 검색 속도가 매우 빨라지며, Hashing 검색을 통해 대용량 데이터 관리에도 좋은 성능을 보이게 된다. Key 값은 중복이 되지 않고, value 값은 중복이 된다. |
(참조 : https://hgserver.tistory.com/54)
각각 put(), get() 을 이용하여 데이터를 삽입/추출할 수 있으며, list에 비해 HashMap이 가지는 이점으로는 put() 메소드가 호출될 때 버킷으로 equals를 통해 동일 여부 판단 이후 저장하게 되기에 초기 메모리 낭비가 심하지 않다는 것이다.
한편 HashMap으로 인해 OOM(Out Of Memory) 현상이 일어나게 되는 경우가 더러 있는데, 이에 대한 원인은 다음과 같은 것들을 의심해볼 수 있다.
- 맵에 캐쉬 데이터를 선언하고 해제하지 않는 경우
- 맵의 키를 사용자 객체로 정의하면서 equals(), hashcode()를 재정의 하지 않아서 같은 키로 착각하여 데이터가 계속 쌓이게 되는 경우
- 맵의 키를 사용자 객체로 정의하면서 equals(), hashcode()를 재정의 하였지만, 키값이 불변(Immutable) 데이터가 아니라서 데이터 비교 시 계속 변하게 되는 경우
728x90
'JAVA > JAVA' 카테고리의 다른 글
JAVA process의 CPU 사용량 패턴 분석 (0) | 2024.01.08 |
---|---|
Java Native Memory Tracking (jcmd 사용) (0) | 2023.02.01 |
java/lang/object (1) | 2022.12.26 |
JVM memory 모니터링 (1) | 2022.09.23 |
JMX (0) | 2022.06.14 |