본문 바로가기
반응형

IT/Java7

Spring Boot 3.2 + Virtual Threads: 도입 전 반드시 알아야 할 함정 (Pinning, ThreadLocal) Java 21의 LTS 출시와 Spring Boot 3.2의 등장으로, 자바 진영의 동시성 모델은 Virtual Threads(Project Loom)라는 거대한 전환점을 맞이했습니다. 이제 spring.threads.virtual.enabled=true 설정 한 줄이면 기존의 무거운 플랫폼 스레드(Platform Thread) 대신, 가볍고 무한에 가까운 가상 스레드를 사용할 수 있게 되었습니다.하지만 "설정만 켜면 성능이 10배가 된다"는 마법 같은 이야기는 반은 맞고 반은 틀립니다. 기존 스레드 모델에 최적화된 라이브러리나 코딩 습관을 그대로 가져갈 경우, 오히려 심각한 장애를 유발할 수 있기 때문입니다.이번 글에서는 Virtual Threads 도입 시 실무에서 반드시 체크해야 할 심화 주제인 P.. 2026. 2. 9.
Java Virtual Threads (Project Loom) 입문 및 성능 튜토리얼 Java Virtual Threads (Project Loom) 입문 및 성능 튜토리얼1. Virtual Threads란?Virtual Threads는 Java 21에서 정식으로 도입된 경량화된 스레드로, Project Loom의 결과물입니다. 기존의 Platform Thread(OS 스레드와 1:1로 매핑되는 스레드)와는 다르게, Virtual Thread는 JVM 내부에서 관리되는 사용자 모드 스레드입니다.핵심 특징:메모리 효율: Platform Thread는 약 1~2MB의 메모리를 사용하는 반면, Virtual Thread는 약 10~20KB만 사용합니다.생성 속도: Platform Thread의 10만 개 생성에 4,005ms가 소요되지만, Virtual Thread는 166ms만 필요합니다 (.. 2025. 11. 11.
ConcurrentModificationException (반복 중 컬렉션 변경 오류) 발생 원인과 해결 방법 - 에러 로그아래 코드는 ArrayList를 반복하면서 내부에서 요소를 제거하고 있습니다. 실행 결과 컬렉션을 순회하던 중 예외가 발생하여 프로그램이 종료됩니다. 예외 메시지는 다음과 같습니다.Exception in thread "main" java.util.ConcurrentModificationException at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:937) at java.base/java.util.ArrayList$Itr.next(ArrayList.java:891) at Example.main(Example.java:15) 위 예외는 컬렉션을 반복(iteration)하는 도중에.. 2025. 3. 14.
클래스 로드 오류 해결 방법 (ClassNotFoundException 및 NoClassDefFoundError) Java 개발을 하다 보면 클래스를 찾지 못해 프로그램이 실행되지 않는 오류를 겪을 수 있습니다. 대표적으로 ClassNotFoundException 예외와 NoClassDefFoundError 오류가 이러한 경우에 해당합니다. 이번 글에서는 두 오류의 발생 원인과 대표적인 사례를 살펴보고, 문제를 해결하는 방법을 단계별로 정리해보겠습니다.- 에러 로그아래는 각 오류가 발생했을 때 콘솔에 출력되는 예외 메시지 예시입니다.ClassNotFoundException 발생 시:java.lang.ClassNotFoundException: com.example.MyClass at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source.. 2025. 3. 11.
Java OutOfMemoryError (메모리 부족 오류) 원인과 해결 방법소개 소개Java를 사용하다 보면 OutOfMemoryError (메모리 부족 오류)를 한 번쯤 마주칠 수 있습니다. 이 오류는 JVM이 더 이상 사용할 수 있는 메모리가 없을 때 발생하며, 발생 즉시 애플리케이션이 비정상 종료되므로 서비스 장애로 이어질 수 있습니다. 이번 글에서는 OutOfMemoryError가 발생하는 원인과 Java에서 이 오류가 나타나는 대표적인 상황들을 살펴보고, 주요 해결 방법을 단계별로 정리해보겠습니다. 최신 Java 버전(예: Java 8 이상)에서도 적용 가능한 대응 방법을 중심으로 설명합니다.- 에러 로그OutOfMemoryError가 발생하면 아래와 같이 오류 메시지와 스택 트레이스가 출력됩니다 (예시는 힙 메모리 부족 상황):Exception in thread "main.. 2025. 3. 10.
Java 인증서 추가 방법 ( SunCertPathBuilderException 해결 ) - 에러 로그 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target - 원인 Java에서는 따로 관리하는 신뢰하는 인증서 목록이 존재하는데 이 파일에 호출하는 도메인 인증서의 루트 인증서가 등록되어 있지 않을때 발생함. - 해결 방법 1. 인증서 목록에서 존재 여부 찾기 1.1. 조회 명령어 ( 인증서 목록이 2개니 cacerts, jssecacerts 중에.. 2021. 10. 27.
반응형