Map을 사용할 때 큰 고민 없이 put, get 메서드를 호출했는데 멀티 스레드 환경에서 왜 스레프 세이프를 고려해야 하는지를 알 수 있었다. 몇 달 전에도 서비스 운영 중 Out of memory가 떠서 힙 덤프를 떠봤었는데 HashMap이 차지하는 비율이 높았었다. 스레프 세이프를 고려하지 못했던게 원인이었을 것 같기도 하다. 하나의 메모리 누수를 잡기까지 https://d2.naver.com/helloworld/1326256 멀티 쓰레드(Multi Thread)란 무엇인가? https://goodgid.github.io/What-is-Multi-Thread/ SynchronizedMap과 ConcurrentHashMap https://ooz.co.kr/71 멀티쓰레드 환경에서 캐시 구현하기 htt..
Date date = new Date(); // 2019-12-29 String dateStr = new SimpleDateFormat("YYYY-MM-dd").format(date); // 2020-12-29 dateStr = new SimpleDateFormat("yyyy-MM-dd").format(date); // 기대한 결과!! 2019-12-29simpleDateFormat을 이용해 Date 자료형을 문자열로 변환하려고 했는데 해당연도인 2019가 아닌, 2020년이 떴다. 문제는 SimpleDateFormat의 연도 포맷이 대문자였기 때문이다. 자바 Date 자료형이 워낙 악명이 높다보니 버그인줄 알았는데 그건 아니고, date week year를 나타내는 포맷이라고 한다. 그 주의 연도이니 ..