MemorySegment JVM memory leak
ahmdprog.java at gmail.com
ahmdprog.java at gmail.com
Sat Apr 18 16:33:38 UTC 2020
Gentlemen,
There is memory leak in JVM while writing and reading byte array to memory
segment. The below is simple example that generates 100G file with zero
bytes. While running the below code, you will see that JVM consumes all
server memory.
Unfortunately, I tested also in reading array of bytes. It has same issue of
memory leak.
public static void testingMemorySegment() {
String strFileName = "/disk3/bigdata.index" +
System.currentTimeMillis();
File fileObjectFileName = new File(strFileName);
if (fileObjectFileName.exists() == false) {
try {
fileObjectFileName.createNewFile();
} catch (IOException e) {
} catch (Exception e) {
}
}
long lngMemorySegmentFileSize = 107374182400l; // 100 G
byte[] bytesArrayString = new byte[4096];
MemorySegment sourceSegment =
MemorySegment.ofArray(bytesArrayString);
long lngTotalNumberOfPagesForAllFile = lngMemorySegmentFileSize /
4096;
try {
MemorySegment memorySegmentTmp = MemorySegment.mapFromPath(new
File(strFileName).toPath(), lngMemorySegmentFileSize,
FileChannel.MapMode.READ_WRITE);
MemoryAddress address = memorySegmentTmp.baseAddress();
MemoryAddress sourceAddress = sourceSegment.baseAddress();
for (long i = 0; i < lngTotalNumberOfPagesForAllFile; i++) {
MemoryAddress.copy(sourceAddress, address.addOffset(i *
4096), 4096);
}
memorySegmentTmp.close();
} catch (IOException e) {
e.printStackTrace();
}
}
More information about the panama-dev
mailing list