Hallo
Ich habe eine Socketverbindung und kann darüber beliebige Objekte versenden. Ich kann nun einfach eine Datei einlesen und z.B. als byte-array in einem Objekt ablegen und das dann senden.
Ist das eine sehr dumme vorgehensweise oder ok? Ich möchte etwas einfaches haben, nicht etwas super schnelles.
Das Objekt wird dann auf der anderen Seite empfangen und abgespeichert. Wenn ich mir den Specherverbrauch der Java-Anwendung aber anschaue wird der nicht wieder freigegeben. Sende ich also ein Objekt mit einer Datei welche 20MB hat bleiben die 20MB im Speicher bestehen. Das Empfangen sieht in etwa so aus:
Mit incoming.received(o) wird das byte-array im objekt als datei gespeichert.
Ich habe mir gedacht wenn ich das Objekt auf null setze dann sollte wenigstens der Garbage Collector den Speicher wieder freimachen, oder überlege ich da was falsch? Gibt es irgend eine Möglichkeit in Java dem Objekt zu sagen dass es nicht mehr gebraucht wird?
Dann noch ne Frage welche gerade zum Thema passt: will ich nun eine sehr grosse Datei versenden (100MB oder mehr) wird ja einfach der Speicher der java VM gefüllt wenn das Objekt empfangen wird. Gibt es da eine bessere Möglichkeit? Müsst ich das mit einem Byte-Stream machen und dann nach und nach die Bytes auf der Festplatte abspeichern? oder geht das auch mit Object-streams?
mfg
Ich habe eine Socketverbindung und kann darüber beliebige Objekte versenden. Ich kann nun einfach eine Datei einlesen und z.B. als byte-array in einem Objekt ablegen und das dann senden.
Ist das eine sehr dumme vorgehensweise oder ok? Ich möchte etwas einfaches haben, nicht etwas super schnelles.
Das Objekt wird dann auf der anderen Seite empfangen und abgespeichert. Wenn ich mir den Specherverbrauch der Java-Anwendung aber anschaue wird der nicht wieder freigegeben. Sende ich also ein Objekt mit einer Datei welche 20MB hat bleiben die 20MB im Speicher bestehen. Das Empfangen sieht in etwa so aus:
Java:
Object o = null;
while ((o = in.readObject()) != null) {
incoming.received(o);
o = null;
}
Ich habe mir gedacht wenn ich das Objekt auf null setze dann sollte wenigstens der Garbage Collector den Speicher wieder freimachen, oder überlege ich da was falsch? Gibt es irgend eine Möglichkeit in Java dem Objekt zu sagen dass es nicht mehr gebraucht wird?
Dann noch ne Frage welche gerade zum Thema passt: will ich nun eine sehr grosse Datei versenden (100MB oder mehr) wird ja einfach der Speicher der java VM gefüllt wenn das Objekt empfangen wird. Gibt es da eine bessere Möglichkeit? Müsst ich das mit einem Byte-Stream machen und dann nach und nach die Bytes auf der Festplatte abspeichern? oder geht das auch mit Object-streams?
mfg