본문 바로가기
반응형

IT16

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.
MongoDB 실무 사용법 + 자바 연동 예제 1. MongoDB란 무엇인가?MongoDB는 문서 지향형 NoSQL 데이터베이스로, JSON과 유사한 BSON(Binary JSON) 형식으로 데이터를 저장합니다. 관계형 데이터베이스와는 달리 고정된 스키마가 없어 유연한 데이터 구조를 가지며, 애플리케이션의 변화에 빠르게 대응할 수 있습니다.MongoDB의 핵심 특징:문서 기반 저장: 데이터가 컬렉션(테이블)의 문서(행) 형태로 저장유연한 스키마: 같은 컬렉션 내 문서들이 서로 다른 필드 구조 가능고성능: 인덱싱, 샤딩을 통한 확장성ACID 지원: MongoDB 4.0+에서 다중 문서 트랜잭션 지원2. MongoDB 데이터 모델링 전략MongoDB의 핵심은 “어떻게 데이터를 저장할 것인가” 입니다. 관계형 데이터베이스의 정규화와는 다른 접근이 필요합니.. 2025. 11. 11.
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.
반응형