La manière d'accéder à la mémoire off-heap d'une application n'a quasiment pas changé depuis 2002, quand les ByteBuffer ont été ajoutés au JDK 4. De nombreuses applications ont pourtant besoin de cette fonctionnalité, afin de stocker ou de traiter des grands volumes de données. Alors que les systèmes ont été étendus à 64 bits et que la mémoire se compte à présent en teraoctets, nous en sommes toujours à utiliser des ByteBuffers indexés sur 32 bits. Il était plus que temps qu'une nouvelle API arrive: c'est le projet Panama qui nous l'apportedans le JDK 22. Cette API permet d'accéder aux librairies natives d'une part, et à la mémoire off-heap d'autre part, objet de cette présentation.
Elle apporte de nouveaux concepts : les Arenas et les MemorySegments qui donnent accès à des zones de mémoire contiguës indexées sur 64 bits, ou encore les MemoryLayout, qui permettent d'accéder à cette mémoire à la façon des Struct du C.
Nous verrons comment l'API est organisée, les patterns qu'elle propose, et les performances que l'on peut en attendre. Nous verrons enfin comment accéder aux données au travers des VarHandle et comment utiliser Jextract pour simplifier l'écriture du code.
Les slides sont en anglais.