Vb6 - upgrade windows 200 -> windows xp - mémoire insuffisante
jeanfo75
Messages postés4Date d'inscriptionlundi 26 octobre 2009StatutMembreDernière intervention29 octobre 2009
-
26 oct. 2009 à 20:58
jeanfo75
Messages postés4Date d'inscriptionlundi 26 octobre 2009StatutMembreDernière intervention29 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 !
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 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
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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
jeanfo75
Messages postés4Date d'inscriptionlundi 26 octobre 2009StatutMembreDernière intervention29 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 !
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
jeanfo75
Messages postés4Date d'inscriptionlundi 26 octobre 2009StatutMembreDernière intervention29 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.
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 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
jeanfo75
Messages postés4Date d'inscriptionlundi 26 octobre 2009StatutMembreDernière intervention29 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 !