Concatener : utilisation excessive de la ram

cs_Gammacronosios Messages postés 49 Date d'inscription lundi 25 octobre 2004 Statut Membre Dernière intervention 23 février 2010 - 13 sept. 2007 à 10:50
cs_rodcobalt22 Messages postés 193 Date d'inscription dimanche 10 février 2002 Statut Membre Dernière intervention 16 février 2016 - 26 sept. 2007 à 09:07
Bonjour à tous.
J'ecris actuellement une classe c# qui permet de concateniser des fichiers (ajouter,enlever,extraire,lire un flux).
Il fonctionne parfaitement, mais lorsque par exemple je concatenise 4900 fichiers image (~650Mo), la ram est totalement utilisée (1Go).

Explication : J'utilise des tableaux de tableaux de byte pour le buffering binaire de chaque fichier, mais je ne sais pas comment vider la ram dédié à ces tableaux de tableaux lorsque la methode a rempli sa fonction.

Pouvez-vous m'aider ?
Merci d'avance.

12 réponses

cs_rodcobalt22 Messages postés 193 Date d'inscription dimanche 10 février 2002 Statut Membre Dernière intervention 16 février 2016
13 sept. 2007 à 12:27
a part leur affecté la valeur Null pour le garbage les intercèpte quand le besoin se fait sentir, je vois pas. Quelqu'un à une autre solution ?

RodCobalt22, vous salue bien
Pensez au TAG résolu ! Ainsi les réponses seront plus facile à trouver et les serial Helper iront plus vite
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
13 sept. 2007 à 14:05
ce n'est pas concaténiser, mais concaténer

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
13 sept. 2007 à 14:39
Voire concaténation dans le contexte du titre ^^

Mx
MVP C# 
0
cs_rodcobalt22 Messages postés 193 Date d'inscription dimanche 10 février 2002 Statut Membre Dernière intervention 16 février 2016
14 sept. 2007 à 09:12
Heuresement qu'il ne raconte pas de bétise ça aurait pu être cancanner

Ok ok, j'ai compris ---->[]

RodCobalt22, vous salue bien
Pensez au TAG résolu ! Ainsi les réponses seront plus facile à trouver et les serial Helper iront plus vite
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Gammacronosios Messages postés 49 Date d'inscription lundi 25 octobre 2004 Statut Membre Dernière intervention 23 février 2010
17 sept. 2007 à 13:53
Désolé, desolé... oui "concaténer", c'est mieux pour kozé la france...
Nan sans rire, j'aurais du me renseigner avant d'ecrire...

Désolé RodCobalt22, mais avec "null" mes variables se vident, mais pas la mémoire...
Du coup j'ai réécris mon projet en vb.net... et là ça marche.

Merci pour vos réponses ! (même si les 3/4 sont pour l'orthographe ^^)
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
17 sept. 2007 à 14:00
en même temps, pour concaténer des chaines, le mieux, c'est d'utiliser soit un String.Concat, soit un StringBuilder.

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
cs_rodcobalt22 Messages postés 193 Date d'inscription dimanche 10 février 2002 Statut Membre Dernière intervention 16 février 2016
18 sept. 2007 à 11:34
Effectivement, c'est beaucoup "plus mieux". D'ailleur Coq à écrit un article vraiment bien sur les raisons de l'utilisation d'un string builder.

http://blogs.developpeur.org/coq/archive/2007/07/28/un-bon-moyen-de-se-souvenir-de-l-ami-stringbuilder.aspx

Au faite, enlève mon "réponse acceptée" sinon d'autre pourrais roire que c'est la solution.

RodCobalt22, vous salue bien
Pensez au TAG résolu ! Ainsi les réponses seront plus facile à trouver et les serial Helper iront plus vite
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
22 sept. 2007 à 18:17
Salut,

Hmmmm, mais on ne parle pas de concaténation de chaine là, si ?
Par contre je suis curieux de savoir en quoi une simple traduction du code C# en VB.NET aurait résolu le problème... (sauf changement dans la configuration/charge de la machine obligeant le GC à libérer plus fréquement la mémoire...)

Sinon à part ça pourquoi ne pas directement écrire les données binaires les unes à la suite des autres sur le flux de sortie ?

/*
coq
MVP Visual C#
CoqBlog
*/
0
cs_Gammacronosios Messages postés 49 Date d'inscription lundi 25 octobre 2004 Statut Membre Dernière intervention 23 février 2010
23 sept. 2007 à 18:45
Salut coq, oui on parle bien de concaténation de fichiers.

"Sinon à part ça pourquoi ne pas directement écrire les données binaires les unes à la suite des autres sur le flux de sortie ?"
-> c'est ce que j'ai fait, mais mes variables prenaient bcp bcp de ram et je ne savais pas comment les vider :(

Je n'ai pas "traduit" mon  projet du C# en VB.net, je l'ai totalement réécrit. J'ai voulu l'ecrire en C# parce que je l'utilise en cours, mais je n'aime pas beaucoup ça syntaxe, je ne la trouve pas du tout structuré et je me perds... contrairement au vb ou je suis totalement à l'aise :) et ou j'ai pu comprendre mon erreur... bref nous ne sommes pas sur un forum vb, mais de c# alors je ne développerait pas plus.

C'est un art la programmation, non
0
cs_rodcobalt22 Messages postés 193 Date d'inscription dimanche 10 février 2002 Statut Membre Dernière intervention 16 février 2016
24 sept. 2007 à 12:30
C# pas structuré !!!!!!

Heu que tu sois à l'aise avec le VB c'est une histoire de gout mais critiquer la structuration d'un langage qui délimite les zones de traitement par des accolades, c'est que l'on appel la structure lol. mais bon maintenant je suis un fanatique de ce langage depuis qu'une certaine personne ma l'a fait découvrir

RodCobalt22, vous salue bien
Pensez au TAG résolu ! Ainsi les réponses seront plus facile à trouver et les serial Helper iront plus vite
 PS : Pardonnez mes fautes d'orthographe (All
0
cs_Gammacronosios Messages postés 49 Date d'inscription lundi 25 octobre 2004 Statut Membre Dernière intervention 23 février 2010
26 sept. 2007 à 08:18
Désolé RodCobalt22, je ne voulais pas te vexer... Contrairement au C#, les structures comme If, For, While, Try et tout finnissent souvent par un End If ou Next, ce qui me permet de me retrouver. Alors qu'en C#, les accolades y sont à toutes les sauces... mais bon... ce n'est évidement qu'un point de vue, n'y vois là aucune insulte au c# !!!! 





C'est un art la programmation, non
0
cs_rodcobalt22 Messages postés 193 Date d'inscription dimanche 10 février 2002 Statut Membre Dernière intervention 16 février 2016
26 sept. 2007 à 09:07
tu m'as pas vexer t'inquiète.
C'est sur tu as entièrement raison chacun à ses habitudes.
Ce que je fais moi pour me retrouver dans mes accolades (quand y en a beaucoup) c'est un copie / Colle de l'instruction ouvrant l'accolade, Par exemple :

if(toto == boulet)
{
      ......
      .....
      .....
}//if(toto == boulet)

Comme ça je sais à quelle zone il appartient. Mais à force, l'indentation suffit amplement mais comme tu l'as dit c'est une question d'habitude.

Par contre, si tu code VB.Net pense bien à mettre par défaut le "Option Explicit" sur "On". ça t'évitera pas mal de surprise et te permettra d'avoir un code plus cohérent même si plus stricte

RodCobalt22, vous salue bien
Pensez au TAG résolu ! Ainsi les réponses seront plus facile à trouver et les serial Helper iront plus vite
 PS : Pardonnez mes fautes d'orthographe (All
0
Rejoignez-nous