I/O উন্নত

MemorySegment ব্যবহার করে 2GB এর চেয়ে বড় ফাইলগুলোকে ডিটারমিনিস্টিক ক্লিনআপ (deterministic cleanup) সহ ম্যাপ করুন।

✕ Java 8
try (FileChannel channel =
    FileChannel.open(path,
        StandardOpenOption.READ,
        StandardOpenOption.WRITE)) {
    MappedByteBuffer buffer =
        channel.map(
            FileChannel.MapMode.READ_WRITE,
            0, (int) channel.size());
    // Limited to 2GB
    // Freed by GC, no control
}
✓ Java 22+
FileChannel channel =
    FileChannel.open(path,
        StandardOpenOption.READ,
        StandardOpenOption.WRITE);
try (Arena arena = Arena.ofShared()) {
    MemorySegment segment =
        channel.map(
            FileChannel.MapMode.READ_WRITE,
            0, channel.size(), arena);
    // No size limit
    // ...
} // Deterministic cleanup
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
📏

কোনো সাইজ লিমিট নেই

কোনো ওয়ার্কআউট ছাড়াই 2GB এর চেয়ে বড় ফাইল ম্যাপ করা যায়।

🔒

ডিটারমিনিস্টিক ক্লিনআপ

Arena নিশ্চিত করে যে মেমরি স্কোপ এক্সিট (scope exit) করার সময় ফ্রি হয়, GC টাইমে নয়।

উন্নত পারফরম্যান্স

আধুনিক মেমরি মডেল এবং হার্ডওয়্যারের সাথে সামঞ্জস্যপূর্ণ।

পুরনো পদ্ধতি
MappedByteBuffer
আধুনিক পদ্ধতি
Arena সহ MemorySegment
JDK থেকে
22
কঠিনতা
উন্নত
ফাইল মেমরি ম্যাপিং (File Memory Mapping)
উপলব্ধ

JDK 22 (মার্চ 2024) থেকে উপলব্ধ

The Foreign Function & Memory API (JEP 454) নিরাপদ এবং দক্ষ মেমরি অ্যাক্সেসের জন্য MemorySegment প্রবর্তন করেছে। MappedByteBuffer-এর বিপরীতে, MemorySegment 2GB (Integer.MAX_VALUE) এর চেয়ে বড় ফাইলগুলোকে সাপোর্ট করে, Arena-এর মাধ্যমে ডিটারমিনিস্টিক ক্লিনআপ (deterministic cleanup) প্রদান করে এবং আধুনিক হার্ডওয়্যারের সাথে আরও ভালো পারফরম্যান্স দেয়।