-
자바 성능 튜닝 이야기 정리 1편java 2020. 7. 31. 13:15
프로파일링 툴
- 소스 레벨 분석을 위한 툴 (성능 개선)
- 메모리 사용량을 객체나 클래스, 소스의 라인 단위까지 분석할 수 있음
APM 툴
- 애플리케이션의 장애 상환에 대한 모니터링 및 문제전 진단이 주 목적
- 서버의 사용자 수나 리소스에 대한 모니터링
String 관련 클래스
- StringBuilder : Thread unsafe
- StringBuffer : Thread safe
// jdk 5 이전 문자열 더하기 public void appendText() { int c = 1; String a = "That is coke"; String b = "I love" + i + "coke"; } // jdk 5 이후에는 컴파일시 아래와 같이 변환된다. public void appendText() { int c = 1; String a = "That is coke"; String b = new StringBuilder().append("I love") .append(i) .append("coke") .toString(); }
Set
- HashSet : 해쉬 테이블에 순서 없이 저장
- TreeSet : 데이터를 정렬해서 담으므로 성능이 느림
- LinkedHashSet : 저장된 순서에 따라 순서 결정
List
- Vector : 객체 생성시에 크기를 지정할 필요가 없는 배열 클래스, Thread safe
- ArrayList : Vector와 비슷하지만, 동기화 처리 x
- LinkedList : Queue 인터페이스를 구현했기 때문에 FIFO 큐 작업을 수행
Map
- Hashtable : 해쉬 테이블에 담는 클래스, Thread safe
- HashMap : 해쉬 테이블에 담는 클래스, null 값 허용, 동기화 X
- TreeMap : 키에 의해서 순서가 정해짐
- LinkedHashMap : HashMap과 거의 동일, 이중 연결 리스트를 사용