Vb6 - upgrade windows 200 -> windows xp - mémoire insuffisante

jeanfo75 Messages postés 4 Date d'inscription lundi 26 octobre 2009 Statut Membre Dernière intervention 29 octobre 2009 - 26 oct. 2009 à 20:58
jeanfo75 Messages postés 4 Date d'inscription lundi 26 octobre 2009 Statut Membre Dernière intervention 29 octobre 2009 - 29 oct. 2009 à 20:43
Hello,

J'ai développé un projet vb6 sous windows 2000. Ce projet manipule des tableaux de données de grande taille (3 dimensions, 700*2500*5). j'avais pas mal optimisé le code, qui fonctionnait sans problème et assez rapidement.

Mon entreprise a upgradé windows (passage à windows xp) et bien que je n'ai pas changé de pc (même puissance, même mémoire) le projet consomme beaucoup plus de mémoire et finit par planter : "mémoire insuffisante".

On a déjà modifié la taille du cache - qui était mal paramétrée à l'origine - mais cela n'a pas résolu le pb.

Si quelqun a une idée elle est plus que bienvenue !

Merci bcp à tous.

Jean_f

7 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
26 oct. 2009 à 21:32
Faut minimum 512Mb pour faire tourner XP correctement (en virant les services et programmes inutiles). Combien prend ton application ?
---
VB.NET is good ... VB6 is better
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
26 oct. 2009 à 22:15
700*2500*5 soit 8750000 d'éléments pour un seul tableau

Si c'est des bytes, ça fait 8.345Mo, si c'est des long, ça fait 33.38Mo
pour des doubles, 66.75Mo

Pour des chaines de longueur variable, imaginons de taille moyenne 30 caractères, ça fait 333,79Mo
Imaginons ne serait-ce que 2 tableaux ainsi (un Redim par exemple, crée un second tableau avant de supprimer le premier) on arrive à 667Mo
Etc ......

Et sans compter le reste du programme, ainsi que le système et les autres programmes.

Il y a vraiment besoin de garder autant de données en mémoire ?????


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0
jeanfo75 Messages postés 4 Date d'inscription lundi 26 octobre 2009 Statut Membre Dernière intervention 29 octobre 2009
27 oct. 2009 à 07:43
Hello,

Merci à tous deux pour vos réponses. Je dispose d'un Go de mémoire virtuelle. Réduire la taille des tableaux est la solution qui m'est régulièrement suggérée.

Reste que je n'ai pas changé une ligne de code ni une donnée et que tout passait très bien sous windows 2000 ... J'en déduis que soit windows xp est plus gourmand ... soit on a pas optimisé l'utilisation de la mémoire. C'est plus la deuxième piste que je cherche à creuser !

Encore merci,

Jean_f
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
27 oct. 2009 à 18:40
La mémoire virtuelle on ne s'en occupe pas ! Il ne faut pas que le programme swappe continuellement la mémoire ... Combien de mémoire occupe ton programme ? Quelle est la quantité de mémoire physique sur les machines ?
---
VB.NET is good ... VB6 is better
0

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

Posez votre question
jeanfo75 Messages postés 4 Date d'inscription lundi 26 octobre 2009 Statut Membre Dernière intervention 29 octobre 2009
28 oct. 2009 à 20:11
Bipro, 2 Go de mémoire physique, qui est utilisée à 60% au max dont 30% par le programme (0.6 Go pour le processus) en mode compilé avec aucune autre application ouverte. En mode non compilé au max je ne sais pas car cela sature la mémoire sur une instruction précise même sans rien d'autre ouvert.

Sous windows 2000 - j'ai la même machine donc exactement la même config - pas même un des processeurs saturé en mode non compilé et exécution bcp plus rapide.

Mon programme est truffé de redim pour les calculs intermédaires.

Merci de ton aide.
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
28 oct. 2009 à 21:45
M'étonnerait pas qu'il se plante sur un redimensionnement. Je crois qu'il recrée le tableau à un autre bout de la mémoire et qu'il n'y a plus de bloc aussi long encore disponible ... Pour savoir si je ne me trompe pas, colle un MsgBox avant chaque Redim, et tu verras si c'est le cas. Le seul moyen (à mon sens) de résoudre ce problème c'est de redimensionner moins, ou d'avoir un tableau plus petit. 600Mb ce n'est pas rien !
---
VB.NET is good ... VB6 is better
0
jeanfo75 Messages postés 4 Date d'inscription lundi 26 octobre 2009 Statut Membre Dernière intervention 29 octobre 2009
29 oct. 2009 à 20:43
Gagné, c'est bien sur un redim. En mode non compilé le débogage m'y envoit direct.

Pas le choix, je pense que je vais voir comment me débrouiller pour grapiller de la mémoire ici et là.

N'empêche que je n'ai toujours pas compris pourquoi le même programme sur la même machine tournait sans problème sous 2000 et sature sous xp. Et ça, ça m'agace !

Encore merci pour ton aide.
0
Rejoignez-nous