Question sur la gestion mémoire

Question sur la gestion mémoire - Java - Programmation

Marsh Posté le 21-07-2005 à 10:39:22    

Bonjour,  
 
Dans un programme type client serveur, j'ai crée une classe qui s'occupe de lire les entré du socket. Pour lire les données je fait cette boucle :
 

Code :
  1. DataInputStream reader = new DataInputStream(socket.openDataInputStream());
  2.   while (run) {
  3.    int sizeRead = reader.readInt();
  4.    if (sizeRead > 0) {
  5.        byte[] bufferData = new byte[sizeRead];
  6.     reader.read(bufferData,0,sizeRead);
  7.            queue.addElement(bufferData);
  8.    }
  9.   }


 
Je me demande ce que deviennet les objets alloués par new byte[sizeRead], Cela ne risque-t-il pas de surcharger la mémoire? car cette application a pour but de tourner sur un pda ou un telephone.
 
Ne vaudrait-il pas mieux que j'alloue un buffer une fois pour toute ?
 
Merci pour votre aide.

Reply

Marsh Posté le 21-07-2005 à 10:39:22   

Reply

Marsh Posté le 21-07-2005 à 11:27:48    

inutile d'allouer un buffer entier, vu que tu n'as besoin à un instant donné que d'une petite partie de ce buffer.
ce que tu peux faire, c'est mettre la référence bufferData à null une fois que tu l'as placée dans ta queue, ce qui indique  au garbage collector qu'il peut libérer la mémoire pointée par cette référence


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 21-07-2005 à 11:35:39    

Ok merci pour ta réponse

Reply

Marsh Posté le 21-07-2005 à 19:25:00    

Harkonnen a écrit :

inutile d'allouer un buffer entier, vu que tu n'as besoin à un instant donné que d'une petite partie de ce buffer.


sa façon de lire m'a l'air passablement louche, mais je ne vois pas non plus ce que tu veux dire, toi :D
edit: ha oui, si, ça y est.
 

Harkonnen a écrit :


ce que tu peux faire, c'est mettre la référence bufferData à null une fois que tu l'as placée dans ta queue, ce qui indique  au garbage collector qu'il peut libérer la mémoire pointée par cette référence


absolument inutile, la reference en question étant locale à la boucle; non ?


Message édité par the real moins moins le 21-07-2005 à 19:26:50
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed