Es können keine großen Dateien über den Socket in Java gesendet werden

Ich habe funktionierende Server- und Client-Anwendungen, die beim Senden kleiner Dateien einwandfrei funktionieren, aber wenn ich versuche, beispielsweise eine Filmdatei mit einer Größe von 700 MB über Socket zu senden, erhalte ich diese

Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space

Ich suchte im Internet und fand einige Tutorials zum Senden großer Dateien, konnte sie aber nicht ganz verstehen, aber ich glaube, mein Porblem befindet sich in einer Schreibdatei.

Dies ist der Code, mit dem der Server meine Datei schreibt:

output = new FileOutputStream(directory + "/" + fileName);
            long size = clientData.readLong();
            byte[] buffer = new byte[1024];

            while (size > 0 && (bytesRead = clientData.read(buffer, 0, (int) Math.min(buffer.length, size))) != -1) {
                output.write(buffer, 0, bytesRead);
                size -= bytesRead;
            }
            output.close();

Und hier ist der Code, mit dem mein Client eine Datei sendet:

byte[] fileLength = new byte[(int) file.length()];  

        FileInputStream fis = new FileInputStream(file);  
        BufferedInputStream bis = new BufferedInputStream(fis);

        DataInputStream dis = new DataInputStream(bis);     
        dis.readFully(fileLength, 0, fileLength.length);  

        OutputStream os = socket.getOutputStream();  

        //Sending size of file.
        DataOutputStream dos = new DataOutputStream(os);   
        dos.writeLong(fileLength.length);
        dos.write(fileLength, 0, fileLength.length);     
        dos.flush();  

        socket.close();  

Antworten auf die Frage(3)

Ihre Antwort auf die Frage