read, write Objects via Sockets
Hi
I have big problem with memory leak (heap size usage). I send object via
Sockets using object input, output stream.
The problem occurs on the client side when i receive an object
public class My implements Serializable{
/** Creates a new instance of My */
public My() {
}
private String newField =
"ewqeqwewqewdsadsadasdsadsadsadsadadsadsadasdsadsadsadasdasdasdasdasdadsadsasddsadasdsadsa";
public String s(){
return this.newField;
}
}
Server side !!!
ServerSocket s = new ServerSocket(1111);
Socket sv = s.accept();
ObjectOutputStream oos = new ObjectOutputStream(sv.getOutputStream());
while(true){
My m = new My();
oos.writeObject(m);
oos.flush();
m=null;
}
clietn side !!
while(true){
My x = (My)oos.readObject();
System.out.println("pdu size:"+x.s());
x = null;
}
The problem is that memory goes up each time i receive My object. Heap
memory goes up and up and gc() cannot clean memory.
But what is the most funny part . When i'm using insted of My class just
simple byte [] array and send via Socket also using object, input output
stream the problem doesn't occure !. But byte array is also serialized by
default .
Profiler in netbeans shows that it gowas up and down - so the way i would
like it to go :D
What may be the cause of this problem ? implementing Serializable or write,
read object methods have some problems ?