성능최적화 2

Kotlin으로 TTL 기반 Map 구현하기: Java 21 가상 쓰레드와 ConcurrentHashMap 최적화

Redis를 사용할 때 유용한 기능인 시간이 지나면 데이터가 지워지는 기능이 있습니다. 이것을 Kotlin에서 사용해보면 좋을 것 같아 구현해보겠습니다. Redis의 TTL(Time To Live) 기능은 데이터가 일정 시간이 지나면 자동으로 삭제되는 매우 유용한 기능입니다. 이 기능을 활용하면 일정 시간 동안만 유효한 데이터를 관리할 수 있어 리소스 효율성을 극대화할 수 있습니다. Redis 대신 Kotlin에서 직접 이러한 TTL 기능을 구현해보면, 기존 Map처럼 동작하면서도 시간 기반 데이터 관리가 필요한 상황에서 유용하게 사용할 수 있습니다. 요구사항기능은 기존 Map과 동일하게 동작해야 합니다.TTL 시간을 생성자로 주입합니다.시간이 지나면 key, Value가 제거됩니다. 구글이 제작한 라이..

Java & Kotlin 2024.10.04

OutOfMemoryError 해결하기: IntelliJ로 메모리 누수 분석하는 방법

코드에 누수가 있거나 요청량이 많아지면 메모리 사용량 100%가 발생할 수 있습니다.  메모리 사용량이 100%가 되면 더이상 메모리를 할당할 수 없고 이는 서비스 장애로 이어집니다. Intellij에서는 메모리 사용량을 분석하기 쉽게 만든 툴이 있어 소개해드리겠습니다. 우선. 메모리 분석하기에 앞서 OutofMemory를 만들어보겠습니다.  간단하게 컨트롤러에 반복문을 만들었고,JVM 옵션으로 -XX:+HeapDumpOnOutOfMemoryError 를 넣었습니다.위 옵션은 OutOfMemory 발생 시 heap dump를 생성하는 옵션입니다.(만약 엑츄에이터를 사용한다면 GET 요청을 통해 dump를 받을 수 있습니다.)(terminal에서는 $ jmap -dump:format=b,file=/path..