Aller au contenu

JAVA

Featured Replies

Posté(e)

Voila je galère grave j'ai une erreur "out of memory" lorsque je lance mon prog Java.

Apparement ca viens du buffer peut pas etre allouer car son type permet pas une taille aussi grande!

J'utilise: byte[] octetsFichiers = new byte[taille];

Voila si vous pouviez m'aider :mdr:

mici a tous

Posté(e)
  • Auteur

voila un extrait du prog

try

{

Socket c = new Socket(InetAddress.getByName("10.20.104.8"),4444);

File file = new File("c:/toto.avi"); //creationd'un objet file ayant comme chemin d'acces

int taille = (int)file.length(); ///calcule la taille de ce fichier

System.out.println("Taille : "+taille);

FileInputStream filein = new FileInputStream(file);//ouverture d'un flot de lecture sur l'objet de type file

byte[] octetsFichiers = new byte[taille];//declaration d'un tableau ayant comme contenance la taille du fichier toto

//c'est ici que ca plante je crois, le type byte ne peut pas contenir autant d'info c.a.d un film qui fait environ 700Mo!!!

filein.read(octetsFichiers);

DataInputStream in = new DataInputStream(c.getInputStream());

DataOutputStream out = new DataOutputStream(c.getOutputStream());

out.writeInt(taille);

out.write(octetsFichiers);

out.flush();

filein.close();

c.close();

}

voila j'espère que tu pourras me trouver une class qui me gère ça (j'ai essayé LongBuffer mais j'ai le meme problème) :francais:

Posté(e)

Euh une allocation mémoire de 700 Mo je pense que c'est un peu abusé, si tu en arrives là c'est que tu as dû faire une erreur de conception quelque part...

Essaie plutôt de charger des bouts du fichier seulement ? Ou de changer ton algorithme.

Concernant la technique pure, je ne pense pas qu'il y ait de limite physique à la taille des tableaux, je dirais plutôt que ça dépend de la machine virtuelle qui n'arrive pas à demander 700 Mo à l'OS...

Tu as combien de ram ? et de swap ?

Posté(e)

Ah, content pour toi :8

Enin c'est bien ce que je pensais : mettre un fichier de 700 Mo en mémoire, ça sentait l'erreur de conception :D

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.