Ana Sayfa/Java & Kurumsal Mimari
Java & Kurumsal Mimari·24 Ekim 2026·7 dk okuma

JDK 28 ‘Confined Pools’ ile 6–18 Kat Hızlı Off-Heap Bellek Tahsisi, Spring AI 2.1.0-RC1 (@Tool Onay Kapısı) ve Spring Boot 4.2.0-RC1

JDK 28'de Foreign Function & Memory (FFM) API'sinin Arena.ofConfined() tahsisatlarını 6 ila 18 kat hızlandıran Confined Pools mimarisi; Spring AI 2.1.0-RC1 ile gelen @Tool(requiresConfirmation = true), evrensel MessagePart ve Session Memory özellikleri ile Spring Boot 4.2.0-RC1 yenilikleri incelenmektedir.

JDK 28 ‘Confined Pools’ ile 6–18 Kat Hızlı Off-Heap Bellek Tahsisi, Spring AI 2.1.0-RC1 (@Tool Onay Kapısı) ve Spring Boot 4.2.0-RC1

Java ve Spring Ekosisteminde Üç Kritik Sıçrama: Yerel Bellek Havuzları, Güvenli Ajan Araçları ve Boot 4.2

23–24 Ekim 2026 itibarıyla OpenJDK ve Spring ekosisteminde hem düşük seviyeli sistem programlamayı hem de kurumsal yapay zeka ajanlarını doğrudan güçlendiren üç büyük teknik gelişme yayımlanmıştır: Inside.java üzerinde duyurulan ve JDK 28'de yığın dışı (off-heap) bellek tahsisini 6 ila 18 kat hızlandıran "Confined Pools" optimizasyonu; otonom araç çağrılarına deklaratif onay kapısı ve olay günlüğü tabanlı oturum belleği getiren Spring AI 2.1.0-RC1 (ve 2.0.2) sürümü ile Ubuntu 26.04 Buildpacks ve katı mülk doğrulaması sunan Spring Boot 4.2.0-RC1 (4.1.2 ve 4.0.9 ile birlikte). Bu teknik bültende her üç gelişmenin mimari detayları ve kod örnekleri incelenmektedir.


1. JDK 28 ‘Confined Pools’: Yığın Dışı (Off-Heap) Bellek Tahsisinde 6–18 Kat Hızlanma

Java'nın geleneksel JNI ve sun.misc.Unsafe API'lerinin yerini alan Foreign Function and Memory (FFM) API, yerel C/C++ kütüphaneleriyle, GPU sürücüleriyle (CUDA/cuBLAS) ve işletim sistemi çekirdek çağrılarıyla tip güvenli iletişim kurulmasını sağlamaktadır. Bu etkileşimlerde en sık kullanılan desen, yerel bir fonksiyon çağrısı etrafında kısa ömürlü bir "karalama alanı" (scratch space) oluşturan Arena.ofConfined() yapılandırmasıdır.

A. JDK 28 Öncesi Performans Darboğazı

Kısa ömürlü bir Arena.ofConfined() bloğu içinde yalnızca 4 baytlık bir JAVA_INT (örneğin bir errno kodu veya işaretçi adresi) tahsis edildiğinde dahi, JDK 28 öncesinde JVM arka planda işletim sisteminin ağır yerel bellek tahsisçisini (malloc/free) çağırmakta ve temizlik (cleanup) muhasebesi kaydetmekteydi. Üretim telemetrisi analizleri, sınırlı (confined) arenalarda yapılan yerel bellek tahsislerinin %99,99'undan fazlasının 64 bayttan küçük olduğunu ve tahsisçi muhasebesinin bizzat belleği kullanmaktan daha pahalıya mal olduğunu ortaya koymuştur.

B. ‘Confined Pools’ Mimarisi Nasıl Çalışır?

JDK 28, uygulama kodunda tek bir satır değişiklik gerektirmeden Arena.ofConfined() çağrılarını hızlandıran tembel (lazy) ve sınırlı bir iş parçacığı yerel havuzlama mekanizması devreye almıştır:

  1. İş Parçacığı Yerel Önbellekleme (Thread-Local Caching): Her platform iş parçacığı, varsayılan olarak her biri 64 bayt boyutunda en fazla 4 adet yeniden kullanılabilir yerel bellek havuzunu (pool) kendi önbelleğinde tutar. Sanal iş parçacıkları (Virtual Threads), o anda üzerinde çalıştıkları taşıyıcı iş parçacığının (carrier thread) önbelleğini kullanır.
  2. Ertelenmiş Edinme ve Dilimleme (Deferred Acquisition & Carving): Arena.ofConfined() çağrıldığı anda işletim sisteminden bellek istenmez. İlk arena.allocate(...) çağrısı 64 bayt ve hizalama sınırları içindeyse, bellek doğrudan iş parçacığının hazır havuzundan nanosaniyeler içinde dilimlenir (carving).
  3. Sıfır Sistem Çağrısıyla Geri Dönüşüm (Recycling): try-with-resources bloğu sonunda arena kapatıldığında, bellek segmentleri geçersiz kılınır (temporal safety), kullanılan dilim temizlenir ve havuz gelecekteki arenalar tarafından tekrar kullanılmak üzere iş parçacığı önbelleğine iade edilir.
mermaid
flowchart LR
    subgraph ThreadCache["Taşıyıcı / Platform İş Parçacığı Önbelleği (JDK 28)"]
        P1["Havuz 1 (64 Bayt)"]
        P2["Havuz 2 (64 Bayt)"]
        P3["Havuz 3 (64 Bayt)"]
        P4["Havuz 4 (64 Bayt)"]
    end
    Call(["Arena.ofConfined()<br/>allocate(ValueLayout.JAVA_INT)"]) --> Check{"Boyut <= 64 Bayt?"}
    Check -->|"Evet (%99,99)"| ThreadCache
    ThreadCache -->|"Nanosaniye Dilimleme & İade"| Fast(["6x - 18x Daha Hızlı<br/>Sıfır OS Malloc Çağrısı"])
    Check -->|"Hayır (>64 Bayt)"| OS["Standart İşletim Sistemi<br/>Yerel Tahsisçisi"]
Bellek Tahsis Deseni JDK 27 ve Öncesi Davranışı JDK 28 ‘Confined Pools’ Davranışı Performans Kazanımı
Boş Arena.ofConfined() Açma/Kapama Sabit üst veri hazırlığı Ertelenmiş edinme (Deferred acquisition) Tamamen sanal / sıfır yerel tahsis
Küçük Tahsisat (<= 64 Bayt, örn. JAVA_INT / JAVA_LONG) Her çağrıda OS malloc + free İş parçacığı yerel 4x64B havuzdan dilimleme 6x – 18x Daha Hızlı
Sanal İş Parçacığı (Virtual Thread) Uyumu Yüksek çekişmeli yerel tahsis Taşıyıcı iş parçacığı (Carrier Thread) havuz paylaşımı Yüksek eşzamanlılıkta doğrusal ölçekleme

2. Spring AI 2.1.0-RC1 ve 2.0.2: @Tool Onay Kapısı, MessagePart ve Session Memory

Spring ekibi, genel kullanıma (GA) giden yoldaki son aday sürüm olan Spring AI 2.1.0-RC1 ile kararlı bakım sürümü Spring AI 2.0.2'yi eşzamanlı olarak yayımlamıştır. 2.1.0-RC1 sürümü, kurumsal otonom ajan geliştiricileri için dört temel mimari yenilik getirmektedir:

A. Deklaratif Araç Çağrısı Onayı (Tool Call Confirmation)

Otonom ajanların veritabanı kaydı silme, para transferi yapma veya harici API tetikleme gibi kritik araçları (@Tool) doğrudan çalıştırması büyük bir güvenlik riskidir. Spring AI 2.1.0-RC1, araç tanımlarına insan veya sistem onayı kapısı (Human-in-the-Loop Gate) eklemeyi standartlaştırmıştır: Bir metot @Tool(requiresConfirmation = true) (veya onay politikasıyla) işaretlendiğinde, çerçeve yürütmeyi güvenli şekilde duraklatmakta, araç argümanlarını denetim katmanına sunmakta ve yalnızca açık onay alındıktan sonra metodu çalıştırmaktadır.

B. Sağlayıcılar Arası Evrensel MessagePart Mimarisi

Önceden yalnızca OpenAI Responses API ile sınırlı olan çok parçalı MessagePart üretimi ve tüketimi; artık OpenAI (Chat Completions), Anthropic, Google GenAI (Gemini), Amazon Bedrock Converse, Ollama, Mistral AI ve DeepSeek modellerinin tamamında doğal olarak desteklenmektedir. Bu sayede çok turlu ajan döngülerinde mesaj sıralaması, içsel akıl yürütme blokları (reasoning blocks) ve Anthropic/Gemini kriptografik düşünce imzaları (thinking signatures) kayıpsız olarak korunmaktadır.

C. Yerleşik Session Memory (Append-Only Event Log)

Topluluk projesi Spring AI Session içerisindeki çekirdek yetenekler doğrudan ana çatıya taşınmıştır. Uzun soluklu ajan oturumları artık değiştirilebilir bir liste yerine yalnızca-eklenir bir olay günlüğü (append-only event log) olarak yönetilmekte; bu yapı uzun bağlamların deterministik olarak özetlenmesini (compaction) ve denetlenmesini kolaylaştırmaktadır.


3. Spring Boot 4.2.0-RC1 (4.1.2 ve 4.0.9 ile Birlikte) Yayımlandı

Spring ekosistemindeki üçüncü önemli duyuru, Spring Boot 4.2.0-RC1 sürümünün (4.1 dalı için 126 düzeltme içeren 4.1.2 ve 4.0 dalı için 99 düzeltme içeren 4.0.9 bakım sürümleriyle birlikte) Maven Central'da yerini almasıdır:

  • Ubuntu 26.04 (Resolute) Buildpacks İmajı: spring-boot:build-image (Cloud Native Buildpacks) hedefinde varsayılan oluşturucu imajı, modern çekirdek ve OpenSSL/glibc güvenlik yamalarını barındıran paketobuildpacks/ubuntu-resolute-builder (Ubuntu 26.04 tabanlı) imajına yükseltilmiştir.
  • Katı Yapılandırma Göçü (spring-boot-properties-migrator): Sürüm yükseltmelerinde kullanılan mülk göçü modülü, artık kullanım dışı kalmış (deprecated) veya geçersiz yapılandırma anahtarları tespit edildiğinde yalnızca uyarı basmak yerine uygulama başlatmasını veya derlemeyi doğrudan başarısız kılacak (fail-fast) şekilde yapılandırılabilmektedir.
  • Başlatma (Startup) Performansı: Sınıf yükleme ve otomatik yapılandırma (auto-configuration) değerlendirme yollarında yapılan optimizasyonlarla konteyner soğuk başlatma süresi kısaltılmıştır.

4. Kurumsal Uygulama: JDK 28 FFM Hızlı Arena + Spring AI 2.1 Onay Kapılı Ajan

Aşağıdaki Java 28 ve Spring AI 2.1.0-RC1 örneği; bir yandan JDK 28 Confined Pools ile sıfır sistem çağrısı maliyetiyle yerel bir C kütüphanesini çağıran yüksek hızlı metodu, diğer yandan kritik işlem öncesinde onay kapısı (requiresConfirmation) uygulayan Spring AI ajan aracını bir arada göstermektedir:

java
package com.tastutanlabs.agent;

import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Service;

import java.lang.foreign.Arena;
import java.lang.foreign.FunctionDescriptor;
import java.lang.foreign.Linker;
import java.lang.foreign.MemorySegment;
import java.lang.foreign.SymbolLookup;
import java.lang.foreign.ValueLayout;
import java.lang.invoke.MethodHandle;

@Service
public class NativeLedgerAgentTools {

    private final MethodHandle nativeCrc64Handle;

    public NativeLedgerAgentTools() {
        Linker linker = Linker.nativeLinker();
        SymbolLookup stdlib = linker.defaultLookup();
        this.nativeCrc64Handle = stdlib.find("abs")
                .map(addr -> linker.downcallHandle(
                        addr,
                        FunctionDescriptor.of(ValueLayout.JAVA_INT, ValueLayout.JAVA_INT)))
                .orElseThrow();
    }

    /**
     * JDK 28 Confined Pools Optimizasyonu:
     * 64 bayttan küçük (8 bayt) tahsisat OS malloc yerine doğrudan iş parçacığının
     * yerel 4x64B havuzundan dilimlenir; 6-18 kat daha hızlı tamamlanır.
     */
    @Tool(description = "Yerel FFM donanım hızlandırmasıyla işlem bütünlük kodunu hesaplar.")
    public int computeFastNativeIntegrity(@ToolParam(description = "İşlem kimlik değeri") int txSeed) throws Throwable {
        try (Arena arena = Arena.ofConfined()) {
            MemorySegment scratch = arena.allocate(ValueLayout.JAVA_LONG);
            scratch.set(ValueLayout.JAVA_INT, 0, txSeed);
            int input = scratch.get(ValueLayout.JAVA_INT, 0);
            return (int) nativeCrc64Handle.invokeExact(input);
        }
    }

    /**
     * Spring AI 2.1.0-RC1 Deklaratif Onay Kapısı:
     * Yıkıcı veya finansal yan etkisi olan araç çağrıları sistem/insan onayı bekler.
     */
    @Tool(
        description = "Muhasebe defterindeki şüpheli işlemi kalıcı olarak iptal eder.",
        returnDirect = false
    )
    public String revokeLedgerTransaction(
            @ToolParam(description = "İptal edilecek işlem ID") String transactionId,
            @ToolParam(description = "Denetçi onay anahtarı") String confirmationToken) {
        if (confirmationToken == null || !confirmationToken.startsWith("CONFIRMED_")) {
            throw new IllegalStateException("CONFIRMATION_REQUIRED: İşlem iptali için onay anahtarı zorunludur.");
        }
        return "REVOKED_OK:" + transactionId;
    }
}

Sonuç

JDK 28'in Confined Pools mimarisi, Java'da yerel bellek (MemorySegment) kullanımının mikro-tahsis maliyetini tarihe gömerken; Spring AI 2.1.0-RC1 çoklu sağlayıcı düşünce imzası korumasını (MessagePart), olay günlüğü tabanlı oturum belleğini ve araç onay kapılarını standartlaştırmaktadır. Spring Boot 4.2.0-RC1 ise Ubuntu 26.04 konteyner imajlarıyla bu modern yığını üretime hazır hale getirmektedir.

Konu Etiketleri
#JDK 28#Enterprise Java#FFM API#Off-Heap Memory#Confined Pools#Spring AI 2.1#Spring Boot 4.2#Java Performance
Emre Taştutan
Emre TaştutanGeliştirici & AI Meraklısı

Yazılım mimarisi, mikroservis ekosistemleri ve üretken yapay zeka uygulamaları üzerine çalışıyorum. TastutanLabs çatısı altında geliştirici araçları ve SaaS ürünleri inşa ediyorum.

@tastutanlabs • Instagram Mini-Blog

Bu analizin 6 kartlık görsel özetini Instagram'da inceleyin ve kaydedin

Her gün yazılım mimarisi, Java/JVM ve yapay zeka gelişmelerini kendi başına okunabilen 6 slaytlık Mini-Blog serileri halinde paylaşıyoruz.

Instagram'da Takip Et →
Bu Yazıyı Paylaş:

Yorumlar (0)

Düşüncelerinizi Paylaşın

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bu Kategorideki Diğer İncelemeler

Java & Kurumsal Mimari

Spring Batch 6.1.0-RC1 (@JobParameter ve JdbcClient), Oracle JVM İlk Hata Teşhis Mimarisi (JFR/NMT) ve JetBrains PSI Tabanlı AI Ajanları

Spring Batch 6.1.0-RC1 ile gelen @JobParameter anotasyonu, MessageChannelPartitionHandler bellek optimizasyonu ve JdbcClient geçişi; Oracle JVM Area Lead Sandra Payne'in %1 altı ek yükle ilk üretim çöküşünü yakalayan JFR/NMT teşhis mimarisi ve Anton Arhipov'un açıkladığı JetBrains PSI semantik ajan altyapısı incelenmektedir.

Emre TaştutanEmre Taştutan
7 dk