Java - Speichern und Hochladen von Arrays auf / vom Speicher auf die Festplatte

Ich habe ein int- und float-Array mit einer Länge von 220 Millionen (fest). Jetzt möchte ich diese Arrays in / aus dem Speicher und auf die Festplatte speichern / hochladen. Derzeit verwende ich FileChannel und MappedByteBuffer von Java NIO, um dieses Problem zu lösen. Es funktioniert einwandfrei, benötigt jedoch ungefähr 5 Sekunden (Wanduhrzeit) für das Speichern / Hochladen des Arrays zum / vom Speicher auf die Festplatte. Eigentlich will ich schneller eins. Kann mir jemand helfen, gibt es eine eingebaute Java-Bibliothek / Datenbank / einen anderen Ansatz, um das Hochladen / Speichern von Arrays viel schneller zu machen? Mir ist es besonders wichtig, Daten von der Festplatte in den Speicher hochzuladen. Ich möchte es schneller machen. Also, wenn sich die Speicherzeit dafür erhöht, habe ich kein Problem. Danke im Voraus.

Der von mir verwendete Code ist unten angegeben (falls erforderlich):

int savenum = 220000000 ;

public void save() {
 try {
    long l = 0 ;
FileChannel channel = new RandomAccessFile(str1, "rw").getChannel();
MappedByteBuffer mbb = channel.map(FileChannel.MapMode.READ_WRITE, 0, savenum * 8);
mbb.order(ByteOrder.nativeOrder());

for(int i = 0 ; i < savenum ; i++){
l = a[i] ;
 mbb.putLong(l);
}
channel.close();

FileChannel channel1 = new RandomAccessFile(str2, "rw").getChannel();
MappedByteBuffer mbb1 = channel1.map(FileChannel.MapMode.READ_WRITE, 0, savenum * 4);
mbb1.order(ByteOrder.nativeOrder());

for(int i = 0 ; i < savenum ; i++){
 int ll = b[i] ;
 mbb1.putInt(ll);
 }
 channel1.close();
 }
  catch (Exception e){
    System.out.println("IOException : " + e);
  }
 }

 public void load(){
 try{
 FileChannel channel2 = new RandomAccessFile(str1, "r").getChannel();
  MappedByteBuffer mbb2 = channel2.map(FileChannel.MapMode.READ_ONLY, 0, channel2.size());
 mbb2.order(ByteOrder.nativeOrder());
  assert mbb2.remaining() == savenum * 8;
 for (int i = 0; i < savenum; i++) {
 long l = mbb2.getLong();
 a[i] = l ;
 }
 channel2.close();

  FileChannel channel3 = new RandomAccessFile(str2, "r").getChannel();
   MappedByteBuffer mbb3 = channel3.map(FileChannel.MapMode.READ_ONLY, 0, channel3.size());
   mbb3.order(ByteOrder.nativeOrder());
   assert mbb3.remaining() == savenum * 4;
    for (int i = 0; i < savenum; i++) {
    int l1 = mbb3.getInt();
    b[i] = l1 ;
    }
    channel3.close();
    }

    catch(Exception e){
    System.out.println(e) ;
      }
    }

Antworten auf die Frage(1)

Ihre Antwort auf die Frage