Presently, all data transfers over sockets are done by copying the all the requested data into memory and then sending it over a socket.
This is fine, generally, for serialized classes; however, when the data are large s.a. OS image files and trace dumps, the file may actually consume more memory than is available (causing thrashing).
A solution to this is to make those data transfers streaming operations. I.e., read in a chunk of data, send that data, receive and write the data chunk, until all the data is transferred.
OS image and traces are now "stream" transmitted in chunks. In the future, this should be done for test cases as well, but there is little need for the time being.
Presently, all data transfers over sockets are done by copying the all the requested data into memory and then sending it over a socket.
This is fine, generally, for serialized classes; however, when the data are large s.a. OS image files and trace dumps, the file may actually consume more memory than is available (causing thrashing).
A solution to this is to make those data transfers streaming operations. I.e., read in a chunk of data, send that data, receive and write the data chunk, until all the data is transferred.