fuite de memoire, socket et Stream
Bon je vais essayer de faire simple.
voici a quoi mon code ressemble :
cote serveur :
Code:
1 2 3 4 5 6
| while(...){
in = new ObjectInputStream(...)
in.read();
out = new ObjectOutputStream(...)
out.write(...);
} |
cote client:
Code:
1 2 3 4 5 6
| while(...){
out = new ObjectOutputStream(...)
out.write(...);
in = new ObjectInputStream(...)
in.read();
} |
mon probleme survient lorsqu'il y a beaucoup d'iterations a effectuer. L'erreur correspondante est :
java.net.SocketException: Software caused connection abort: socket write error
Je suppose que c'est du a une fuite de memoire ou quelque chose comme ca, car j'utilise j'appelle des constructeur a chaque iteration de la boucle.
j'ai donc essaye de rendre les varialbes null et d'appeller le garbage collector, mais rien y fait.
Je pense que la solution serait de sortir les appels de constructeur de la boucle :
cote serveur :
Code:
1 2 3 4 5 6
| in = new ObjectInputStream(...)
out = new ObjectOutputStream(...)
while(...){
in.read();
out.write(...);
} |
cote client:
Code:
1 2 3 4 5 6
| out = new ObjectOutputStream(...)
in = new ObjectInputStream(...)
while(...){
out.write(...);
in.read();
} |
Mais la un autre probleme se pose :
d'apres la javadoc new ObjectInputStream(...) est bloquant, il reste bloqué jusqua ce que l'outputstream correspondant soit "ecrit".
que faire ?
je peux fournir des sources si necessaire.
merci d'avance