jdk213 [Spring] Spring Framework CDS(Class Data Sharing) (Project Leyden) https://spring.io/blog/2023/10/16/runtime-efficiency-with-spring에 대한 후속 조치로 Project Leyden 최적화를 위해 많이 사용되지 않는 JDK의 CDS(lass Data Sharing) 기능에 대한 지원이 Spring Framework 6.1에 제공되어 CDS에 대하여 알아본다. GraalVM, Proejct CRaC를 사용하면 Spring Boot 애플리케이션을 수십 밀리초에 시작할 수 있다. 하지만 왜 CDs에 관심을 가져야 하는지 알아보자.GraalVM 및 Proejct CRaC보다 제약 조건과 부작용이 적고, OpenJDK에서 즉시 사용 가능한 기술이다.대부분의 사람들은 CDS를 사용하지 않지만 상대적으로 적은 작업으로 합리적인 시작 시.. 2024. 6. 6. Java Virtual Threads 사용 시 synchronized 주의 개요Virtual thread를 synchronized 구문과 함께 사용 시 주의 해야한다. Java 21 + tomcat + HttpComponents 조합으로 Virtural Therad를 활성화하여 사용하면 요청이 많은 경우 서버가 blocking되는 이슈가 발생할 수 있다.https://openjdk.org/jeps/444There are two scenarios in which a virtual thread cannot be unmounted during blocking operations because it is pinned to its carrier:When it executes code inside a synchronized block or method, orWhen it executes.. 2024. 6. 4. Virtual Threads Summary높은 처치량의 동시성 애플리케이션을 개발하는데 사용하는 lighweight threads. HistoryJDK 19 미리보기 기능으로 제안되었고, 아래 변경사항을 포함하여 JDK 21에 추가될 예정thread-local variables 지원Thread API를 통해 직접 생성 가능Goalsthread-per-reqeust style로 하드웨어를 최대한 활용한 코드를 쉽게 작성 할 수 있게 해준다.java.lang.Thread API를 사용하여 최소한의 변경으로 가상 스레드를 적용할 수 있게 한다.기존 JDK 툴로 트러블 슈팅, 디버깅, 프로파일링을 가능하게 한다.Non-Goals전통적인 스레드 구현을 제거하거나, 가상 스레드 사용으 위해서 기존 애플리케이션을 마이그레이션하는 것이 목표가 아.. 2024. 6. 2. 이전 1 다음