Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Programme gourmand en mémoire

5 réponses
Avatar
Jérôme VERITE
Bonjour,

Mon programme est très très gourmand en mémoire et je désirerai optimiser
cette consommation.
Pour cela, j'aimerai connaître la mémoire utilisée par mes différents
objets, par mes dlls dans le détail et de préférence en direct pendant
l'éxécution de mon programme.

Connaitriez vous des techniques ou des outils me permettant d'espionner tout
ca?

Merci d'avance

Jérôme

5 réponses

Avatar
Christophe
Bonjour,

je vois que l'on ne répond ni à toi ni à moi, si tu trouves qqchose fait
signe.

Christophe Vergon
"Jérôme VERITE" a écrit dans le message de news:
#
Bonjour,

Mon programme est très très gourmand en mémoire et je désirerai optimiser
cette consommation.
Pour cela, j'aimerai connaître la mémoire utilisée par mes différents
objets, par mes dlls dans le détail et de préférence en direct pendant
l'éxécution de mon programme.

Connaitriez vous des techniques ou des outils me permettant d'espionner


tout
ca?

Merci d'avance

Jérôme




Avatar
Crevecoeur Jérôme
il existe le provess viewer qui permet de voir la taille des fichiers osus
Windows 2000/XP.

Executez votre programme en pas à pas et répérez les consommations de
mémoire.


libérez vous tous vos objets?
avec des set monobjet=nothing?

--
----------------------------------------------------------------------------
--------------------
Crévecoeur Jérôme

ACS INFORMATIQUE
122,rue du Château d'orgemont
49000 ANGERS
Tel: 02 41 68 42 36 Fax: 02 41 68 42 48
----------------------------------------------------------------------------
---------------------
"Christophe" a écrit dans le message de
news:bjskgp$qgs$
Bonjour,

je vois que l'on ne répond ni à toi ni à moi, si tu trouves qqchose fait
signe.

Christophe Vergon
"Jérôme VERITE" a écrit dans le message de news:
#
> Bonjour,
>
> Mon programme est très très gourmand en mémoire et je désirerai


optimiser
> cette consommation.
> Pour cela, j'aimerai connaître la mémoire utilisée par mes différents
> objets, par mes dlls dans le détail et de préférence en direct pendant
> l'éxécution de mon programme.
>
> Connaitriez vous des techniques ou des outils me permettant d'espionner
tout
> ca?
>
> Merci d'avance
>
> Jérôme
>
>




Avatar
Christophe
Bonjour,

Je crois liberer tous les objets avec set mo=nothing
et deleteobject pour les objets GDI créer par le programme
(DC, pen, DIBsections)

j'utilise aussi une dll ecrite en C++, le probleme peut aussi venir de là.

Mon appli manipule des DIB de l'ordre de 15 Mo l'un.
Au bout d'un certain temps d'utilisation (chargement, dechargement, rotation
d'image) j'ai un echec dans la création de DIB.

Il faut éteindre et relancer la machine pour revenir à une situation
normale. J'en conclu que je n'ai plus de ressources GDI.

christophe Vergon


"Crevecoeur Jérôme" a écrit dans le message de
news: #
il existe le provess viewer qui permet de voir la taille des fichiers osus
Windows 2000/XP.

Executez votre programme en pas à pas et répérez les consommations de
mémoire.


libérez vous tous vos objets?
avec des set monobjet=nothing?

--
--------------------------------------------------------------------------


--
--------------------
Crévecoeur Jérôme

ACS INFORMATIQUE
122,rue du Château d'orgemont
49000 ANGERS
Tel: 02 41 68 42 36 Fax: 02 41 68 42 48
--------------------------------------------------------------------------


--
---------------------
"Christophe" a écrit dans le message de
news:bjskgp$qgs$
> Bonjour,
>
> je vois que l'on ne répond ni à toi ni à moi, si tu trouves qqchose fait
> signe.
>
> Christophe Vergon
> "Jérôme VERITE" a écrit dans le message de


news:
> #
> > Bonjour,
> >
> > Mon programme est très très gourmand en mémoire et je désirerai
optimiser
> > cette consommation.
> > Pour cela, j'aimerai connaître la mémoire utilisée par mes différents
> > objets, par mes dlls dans le détail et de préférence en direct pendant
> > l'éxécution de mon programme.
> >
> > Connaitriez vous des techniques ou des outils me permettant


d'espionner
> tout
> > ca?
> >
> > Merci d'avance
> >
> > Jérôme
> >
> >
>
>




Avatar
Ledev
Jérôme VERITE wrote:
Bonjour,



Bonjour,

Mon programme est très très gourmand en mémoire et je désirerai
optimiser cette consommation.
Pour cela, j'aimerai connaître la mémoire utilisée par mes différents
objets, par mes dlls dans le détail et de préférence en direct pendant
l'éxécution de mon programme.

Connaitriez vous des techniques ou des outils me permettant
d'espionner tout ca?



-Tentez de remplacer les contrôles/instruction ou fonction VB et tous se qui
est possible par des APIs, souvent plus légère.
-Déclarer les variables dans le type le plus aproprié(ne pas mettre un age
dans un type double par exemple).
-Evitée de lire un fichiers dans sa totalité 'input(lof(f),f)' si il est
trop gros.
-Libérer tous les objets avec nothing
-Ne pas crée des tableaux surdimensionnez, du style:
MonTableau(10000) as string
affin d'être certain de ne pas manquer d'élément, mais plutôt utilisée Redim
pour en adapter les dimension quand nécéssaire.
-Si c'est un projet qui a beaucoup de feuille, et qu'elle sont trés
lourdes(style avec de grosses images...), ne les chargée qu'au moment
désirer(et les décharger une fois qu'elle ne sont plus utile), une feuille
pése en moyenne 2Mo en mémoire(biensûr sa dépend de la feuille).
-Si une feuille à énormément d'image, mais qu'elle n'en a pas besoin
simultanément, plutôt que de tous les mettres dans des ImageBox qu'on rend
visible ou invisible au besoin, les mettres dans des ressource et les
chargée/déchargée au besoin.

Voilà pas mal de choses, aprés il y en à surement(forcement) d'autre, mais
c'est déjà je pense un début.

a+
Avatar
Christophe
En fait mon appli charge les images dans un DC en memoire, qui est gerer par
une classe MemoryDIB
Chaque DIB est ensuite paint à l'echelle dans le DC d'affichage qui lui est
celui d'un pictureBox de l'appli gerer par une classe metricDC.

En fait j'ai l'impression que chaque fois que je crée une nouvelle instance
de la classe memoryDIB et qu'elle est paint pour la première fois par
PaintOnMetricDC(mdc as metricDC),la valeur de msavedDC& (valeur privée de la
classe metricDC), est incrementée est quand ça dépasse 255 c'est la que ça
bugg.

Je suis pas sur du moment mais je suis certain d'une chose c'est que la
valeur augmente.

La valeur msavedDC& est attribuée à chaque appel d'une methode de metricDC
par msavedDC&=saveDC&(mhDC&)
Le DC est ensuite restauré à chaque fin d'appel par
m_savedDC&=restoreDC(mhDC&,msavedDC&)

la valeur de mhDC& est attribuée sur mdiform_load

En résumé je vois qu'il y a une erreur mais pas moyen de la trouver.

Christophe V.



"Ledev" a écrit dans le message de news:

Jérôme VERITE wrote:
> Bonjour,

Bonjour,

> Mon programme est très très gourmand en mémoire et je désirerai
> optimiser cette consommation.
> Pour cela, j'aimerai connaître la mémoire utilisée par mes différents
> objets, par mes dlls dans le détail et de préférence en direct pendant
> l'éxécution de mon programme.
>
> Connaitriez vous des techniques ou des outils me permettant
> d'espionner tout ca?

-Tentez de remplacer les contrôles/instruction ou fonction VB et tous se


qui
est possible par des APIs, souvent plus légère.
-Déclarer les variables dans le type le plus aproprié(ne pas mettre un age
dans un type double par exemple).
-Evitée de lire un fichiers dans sa totalité 'input(lof(f),f)' si il est
trop gros.
-Libérer tous les objets avec nothing
-Ne pas crée des tableaux surdimensionnez, du style:
MonTableau(10000) as string
affin d'être certain de ne pas manquer d'élément, mais plutôt utilisée


Redim
pour en adapter les dimension quand nécéssaire.
-Si c'est un projet qui a beaucoup de feuille, et qu'elle sont trés
lourdes(style avec de grosses images...), ne les chargée qu'au moment
désirer(et les décharger une fois qu'elle ne sont plus utile), une feuille
pése en moyenne 2Mo en mémoire(biensûr sa dépend de la feuille).
-Si une feuille à énormément d'image, mais qu'elle n'en a pas besoin
simultanément, plutôt que de tous les mettres dans des ImageBox qu'on rend
visible ou invisible au besoin, les mettres dans des ressource et les
chargée/déchargée au besoin.

Voilà pas mal de choses, aprés il y en à surement(forcement) d'autre, mais
c'est déjà je pense un début.

a+