I am writting a app transfer file based Socket.When I transfer file less than 10 mb ,then no matter what happens.But when I transfer file over 20mb, then I get Out of Memory error and crash my app.
This is my code
RandomAccessFile aFile = new RandomAccessFile(path, "r");
FileChannel inChannel = aFile.getChannel();
ByteBuffer buffer = ByteBuffer.allocate(1024);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int n;
while ((n = inChannel.read(buffer)) > 0) {
buffer.flip();
total_length += n;
baos.write(buffer.array(), 0, n);
byte[] aaa = baos.toByteArray();
ObjectStream obstream = new ObjectStream("stream", aaa, session_request, total_length);
aaa=null;
outt.writeObject(obstream);
obstream = null;
baos.reset();
buffer.clear(); // do something with the data and clear/compact it.
}
inChannel.close();
aFile.close();
This is error that geted :
FATAL EXCEPTION: Thread-177
java.lang.OutOfMemoryError
at java.io.ByteArrayOutputStream.toByteArray(ByteArrayOutputStream.java:122)
at com.jsc.Remote2Droid.Thread.ThreadClientData.run(ThreadClientData.java:705)
out of memory at location:
byte[] aaa = baos.toByteArray();
Please help me fix my code.Thank all.Sorry for my english.
ByteArrayOutputStream Out of Memory error when send over socket
Aucun commentaire:
Enregistrer un commentaire