My Scala/Java code has a large (several hundred megabytes) integer arrays. I would send these as fast as possible (without copying the contents) from this int[] using java.nio. Also, when I receive any data on my nio socket channels, I would use the data as int[] without copying.
All nio operations require ByteBuffer, while ByteBuffer can only wrap byte [].
I can allocate a ByteBuffer, then put my array using asIntBuffer, but it will copy the random array and I have to store my data twice.
val size = 1234
val random = Array.fill[Int](size) { scala.util.Random.nextInt(1000) }
val buf = ByteBuffer.allocate(4 * size)
buf
.asIntBuffer()
.put(random)
I am using project panama openjdk, therefore any new trick (like using Pointer<>) could help me.
TL;DR: In Java or Scala, how can access my integer array as ByteBuffer and int[].