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.

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:
- İş 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. - Ertelenmiş Edinme ve Dilimleme (Deferred Acquisition & Carving):
Arena.ofConfined()çağrıldığı anda işletim sisteminden bellek istenmez. İlkarena.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). - Sıfır Sistem Çağrısıyla Geri Dönüşüm (Recycling):
try-with-resourcesbloğ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.
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ıranpaketobuildpacks/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:
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.
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.
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.
Yorumlar (0)
Düşüncelerinizi Paylaşın
Henüz yorum yapılmamış. İlk yorumu siz yapın!
Bu Kategorideki Diğer İncelemeler
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.
JDK 28’de Resmileşen JEP 543 (Structured Concurrency), JEP 546 Otonom ZGC Yığın Ölçekleme ve Spring AI Yerel Model Mimarisi
Inside.java’da JDK 28 için resmileşen JEP 543 (StructuredTaskScope ve Joiner<T, R, R_X>), manuel -Xmx ayarını ortadan kaldıran JEP 546 Adaptive ZGC, Spring Office Hours S5E26 yerel AI orkestrasyonu ve Mise ile geliştirici ortamı yönetiminin teknik analizi.
Reflect, Transform, Accelerate ile Java’da cuBLAS Seviyesi GPU Hesaplama, JBang ile Derlemesiz Spring MCP Servisleri ve Spring Boot 4.1 SSRF Kalkanı
Inside.java'da yayınlanan Devoxx Belgium 'Reflect, Transform, Accelerate' sunumuyla Java'dan NVIDIA Nsight ve cuBLAS seviyesinde GPU programlama, JBang ile tek dosyada derlemesiz Spring AI MCP sunucuları, atomik iddia doğrulaması ve Spring Boot 4.1 SSRF korumasının teknik analizi.