Boucle qui bouffe ma ram

Boucle qui bouffe ma ram - Java - Programmation

Marsh Posté le 23-08-2002 à 01:05:26    

Voila j'essai de faire un logiciel qui capture des image avec ma webcam et cette boucle use mes 200mo en quelques secondes. et comme je n'y connait rien en libération de mémoire ...
 

Code :
  1. new JFrame("test" );
  2.             setTitle("aaa" );
  3.             setSize(600,400);
  4.             ImagePanel a;
  5.             Processor p;
  6.             PushBufferDataSource pbSrc;
  7.             PushBufferStream[] strms;
  8.             PushBufferStream camStream;
  9.             VideoFormat rgbf;
  10.             BufferToImage conv;
  11.             Image i;
  12.             BufferedImage image;
  13.             Graphics g2;
  14.             Buffer b = new Buffer();
  15.             while(true){
  16.                 p = Manager.createProcessor(src);
  17.                 System.out.println("a" );
  18.                 p.realize();
  19.                
  20.                 while(p.getState()!=javax.media.Controller.Realized){}
  21.                
  22.                 // Need to wait here for RealizeCompleteEvent
  23.                 p.start();
  24.                 pbSrc =(PushBufferDataSource)p.getDataOutput();
  25.                 strms =pbSrc.getStreams();
  26.                 camStream = strms[0]; // Should test Format
  27.                 rgbf =(VideoFormat)camStream.getFormat();
  28.                 conv = new BufferToImage(rgbf);
  29.                
  30.                 // To get an Image
  31.                 camStream.read(b);
  32.                 i = conv.createImage(b);
  33.                
  34.                 image=new BufferedImage(i.getWidth(null),i.getHeight(null),BufferedImage.TYPE_INT_RGB);
  35.                 g2 = image.createGraphics();
  36.                 g2.drawImage(i,0,0,null);
  37.                 try{
  38.                     OutputStream os =
  39.                     new FileOutputStream("image.jpg" );
  40.                     JPEGImageEncoder encoder =
  41.                     JPEGCodec.createJPEGEncoder(os);
  42.                     encoder.encode(image);
  43.                     os.close();
  44.                 } catch (IOException e) {
  45.                     e.printStackTrace();
  46.                 }
  47.                 a = new ImagePanel(i);
  48.                 getContentPane().add(a);
  49.                 show(); 
  50.             }

Reply

Marsh Posté le 23-08-2002 à 01:05:26   

Reply

Marsh Posté le 23-08-2002 à 01:11:27    

j'ai pas totu compris, mais dans ta boucle, y a un truc sur lequel tu appelles start() sans jamais faire de stop, donc ca me parait bizare.
 
y a aussi le fait que tu fais des add d'une image sur un le contentPane de ta Frame. Peut-être qu'il faudrait faire un remove un coup de temps en temps ...  
 
enfin bon, je connais pas les lib que tu utilises donc c'est pas évident de voir comme ca ...

Reply

Marsh Posté le 23-08-2002 à 12:34:56    

la lib c'est jmf
 
c'est vrai que j'ai oublié quelques remove
 
je crois que si je fais un stop ca coupe la cam enfin je vais essayer

Reply

Marsh Posté le 23-08-2002 à 12:37:56    

kakou a écrit a écrit :

la lib c'est jmf
 
c'est vrai que j'ai oublié quelques remove
 
je crois que si je fais un stop ca coupe la cam enfin je vais essayer




 
bin tu as une thread qui boucle en permanence c'est normal  :sarcastic:  
 
j'ai vraiment l'impression qu'on répéte tout le temps la meme chose sur ce forum.
 
Imagine que tu dois couper du bois. Et que dès que tu as coupé un bout de bois tu prends un autre et qu'il y a une infinité de bois. Au bout d'une heure tu risques d'etre très fatiguée. Bin ton programme là c'est pareil sauf qu'il VA BEAUCOUP PLUS VITE (et donc il est bcp plus vite fatigué).
 
Conclusion. Faut le faire dormir un peu (2h pour toi, quelque centaines de msec pour ta thread)


Message édité par darklord le 23-08-2002 à 12:38:09
Reply

Marsh Posté le 23-08-2002 à 12:38:35    

et tu realize mal ton player. Pq tu fais comme cA?

Reply

Marsh Posté le 23-08-2002 à 12:45:35    

bé pour l'instant c'est des test de la jmf car j'ai découvert ca hier, mais si tu as des subjestion elle sont bien venu

Reply

Marsh Posté le 23-08-2002 à 12:53:16    

bin il y a une méthode bloquante pour réalizer ton player. Tu n'as donc pas besoin d'attendre que l'état soit correct avec une boucle faite à la main.
 
Ah bin en fait tu le fais
 
p.realize() est bloquant normallement ... donc pas besoin de ton while(p.getState() ...)
 
enfin pour tout ce qui est audio c'est comme ca. Tu as quoi comme webcam? (elle est détectée dans JMStudio?)

Reply

Marsh Posté le 23-08-2002 à 12:53:49    

kakou a écrit a écrit :

bé pour l'instant c'est des test de la jmf car j'ai découvert ca hier, mais si tu as des subjestion elle sont bien venu




 
bin regarde ce que fais ta thread, ca n'a RIEN à voir avec JMF c'est une erreur basique (faut faire dormir ta thread sinon ca bouffe tout ton CPU et c'est normal)

Reply

Marsh Posté le 23-08-2002 à 12:56:25    

oui mais le thread il etait bloquer par la deuxieme bloucle que j'avais elle oublié de bloquer
 
Si je let po de deuxieme boucle pour attendre que ce soit réalisé, ca ne marche po , il ne bloque po sur le realize il pase directement  a la suite

Reply

Marsh Posté le 23-08-2002 à 12:59:00    

pour ce qui est de la cam je la détecte mois meme avec une autre classe qui renvoi une instant de  
CaptureDeviceInfo
 
je l'ai faite a l'aide de la classe VFWManual.java

Reply

Marsh Posté le 23-08-2002 à 12:59:00   

Reply

Marsh Posté le 23-08-2002 à 13:11:33    

tu dois déclarer ta cam dans JMStudio (si tu es sous windows)

Reply

Marsh Posté le 23-08-2002 à 13:16:36    

bé non je la recherche parmis les device présent
VFWManual: Committed ok
CaptureDeviceInfo = vfw:Microsoft WDM Image Capture (Win32):0 vfw://0
 

Reply

Marsh Posté le 23-08-2002 à 13:19:26    

bon elle est déclarée dans JMStudio oui ou non? Est ce qu'elle est présente dans liste des capture devices ?
 
c'est tout ce que je demande.
 
Ceci dit et je me répète ton problème n'a strictement rien à voir avec JMF.
 
M'enfin si tu me crois pas c'est ton problème hein ...

Reply

Marsh Posté le 23-08-2002 à 13:23:21    

a si je te crois c'est bon c'est régler.
fallait juste mettre un sleep
 
oui elle est présenyte ma cam j'arrive a capturer des image et a les afficher
 
merci

Reply

Marsh Posté le 23-08-2002 à 13:29:05    

kakou a écrit a écrit :

a si je te crois c'est bon c'est régler.
fallait juste mettre un sleep
 
oui elle est présenyte ma cam j'arrive a capturer des image et a les afficher
 
merci




 
 :sarcastic: il aura qd meme fallu que je répète trois fois la meme chose. C'est quand meme dingue ...
 
enfin  :na:

Reply

Marsh Posté le 23-08-2002 à 13:29:59    

bé je l'avais corriger dés que tu la dis la première fois
aurais-je homis de te le dire  :D

Reply

Marsh Posté le 23-08-2002 à 13:30:10    

kakou a écrit a écrit :

bé je l'avais corriger dés que tu la dis la première fois
aurais-je homis de te le dire  :D  




 
 :cry:

Reply

Marsh Posté le 23-08-2002 à 13:37:51    

Désolé je le ferais plus, je suis en train de manger en meme temps donc c'est dure :)

Reply

Marsh Posté le 23-08-2002 à 13:38:59    

derniere question en passant, ca bouffe 50mo de ram sur mes 5120mo c'est dans la moyenne?

Reply

Marsh Posté le 23-08-2002 à 13:47:00    

kakou a écrit a écrit :

derniere question en passant, ca bouffe 50mo de ram sur mes 5120mo c'est dans la moyenne?




 
 
tu as 5Go de ram ? :D

Reply

Marsh Posté le 23-08-2002 à 14:16:37    

non 512mo
 
et ca me parrer beaucoup qu'il bouffe autant
 
d'ailleurs netbean m'en bouffe 130

Reply

Marsh Posté le 23-08-2002 à 14:21:48    

non c normal. Tu as une mémoire confortable et donc l'OS en alloue plus que si tu n'en avait que 128 ou 256 ..

Reply

Marsh Posté le 23-08-2002 à 14:23:46    

c'est bien ce que je penser mais je préférer m'en assurer

Reply

Marsh Posté le 23-08-2002 à 14:26:41    

Java est sponsorisé par les fabriquants de RAM ! ;)

Reply

Marsh Posté le 23-08-2002 à 14:29:33    

c'est clair quand on voit les propriété du systeme quand on execute un prog,
aprés du coup y'en a plein qui dise java c'est nul: c'est lent et ca bouffe toutes la ram

Reply

Marsh Posté le 23-08-2002 à 14:31:23    

ben ils ont pas tord quand ils disent c'est lent et ca bouffe toute la RAM...

Reply

Marsh Posté le 23-08-2002 à 14:33:00    

je sais mais quand tu regarde les niveau de ram quand tu lance un prog y'as de quoi avoir peur
 
Enfin moi je répéte ce que me disent tous mes potes qui sont contre le java

Reply

Marsh Posté le 23-08-2002 à 14:37:00    

benou a écrit a écrit :

ben ils ont pas tord quand ils disent c'est lent et ca bouffe toute la RAM...




 
ca dépend ...

Reply

Marsh Posté le 23-08-2002 à 14:41:22    

c'est vrai que toutes a l'heure moi cétait le cas mais c'etait de ma faute  :D  :D

Reply

Marsh Posté le 23-08-2002 à 14:42:06    

DarkLord a écrit a écrit :

 
 
ca dépend ...



oui des fois c'est TRES lent et ça bouffe VRAIMENT toute la ram
[:phenos]


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 23-08-2002 à 14:43:31    

--greg-- a écrit a écrit :

oui des fois c'est TRES lent et ça bouffe VRAIMENT toute la ram
[:phenos]




 
arrête de troller et travaille :fou:
 
 [:darklord]

Reply

Marsh Posté le 23-08-2002 à 14:43:43    

--greg-- a écrit a écrit :

oui des fois c'est TRES lent et ça bouffe VRAIMENT toute la ram
[:phenos]




 
qd c'est toi qui programme tu veux dire :D

Reply

Marsh Posté le 23-08-2002 à 14:47:38    

DarkLord a écrit a écrit :

 
 
qd c'est toi qui programme tu veux dire :D




 
lol

Reply

Marsh Posté le 23-08-2002 à 14:58:52    

--greg-- a écrit a écrit :

oui des fois c'est TRES lent et ça bouffe VRAIMENT toute la ram
[:phenos]




 
[troll]
((CPU >= 1.5 GHz) && (MEM >= 256 Mo)) == RULEZZZ
[/troll]

Reply

Marsh Posté le 23-08-2002 à 17:26:59    

c'est ce que j'ai et c'est vrai que ca roule par contre au boulot y'as que 128mo de ram et ca rame  :heink:

Reply

Marsh Posté le 23-08-2002 à 19:36:52    

skler, je bosse toute la journee sous jEdit avec un PIII 500 et 96 de RAM, et ben je suis obligé de le fermer toutes les 2/3 heures sinon ca avance plus

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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