전체 글 2

OkHttp의 Cache 생성시 캐시 용량 고민

REST Api 호출에 캐싱처리를 하기 위해서,OkHttp의 Cache 객체 생성시 용량을 어느정도로 만들어야할 지 고민이었고,다음과 같은 방법으로 처리했다.(minCacheSize, maxCacheSize, ratio는 적절하게 수정할 것) /** * @param cacheDir 캐시 디렉토리 * @param minCacheSize 최소 캐시 용량 (예: 10MB) * @param maxCacheSize 최대 캐시 용량 (예: 50MB) * @param ratio 사용 가능한 용량 중 얼마를 캐시 용량으로 사용할지 결정 (예: 0.05는 5%) */fun provideCache( context: Context, cacheDirname: String = "network_cache", mi..

android 2025.02.09

Java volatile

Java의 volatile은 멀티스레드 환경에서 변수의 가시성을 보장하고, 명령어 재정렬을 방지하기 위해 사용되는 키워드다. 런타임에서 자바의 변수는 일반적으로 각 스레드의 PC Register의 캐시 메모리(또는 작업 메모리)에 복사되어 효율적인 연산을 수행한다. 그러나 이 방식은 멀티스레드 환경에서 변수의 최신 상태를 다른 스레드가 즉시 확인하지 못하는 경우가 발생해, 일관성을 보장하지 못해 RaceCondition 같은 문제가 발생할 수 있다.Volatile 주요 기능가시성 보장volatile 변수에 대한 쓰기 작업이 발생하면 해당 값이 메인 메모리에 반영되고, 이로 인해 다른 스레드가 접근할 때 메인 메모리를 먼저 참조하여 캐시 메모리를 최신화하여, 이를 가시성을 보장한다고 한다.단일스레드 환경에..

java 2024.10.29