Matrice(Tableau) trop grande et erreur mémoire (System.OutOfMemoryException)
Gnomed
Messages postés7Date d'inscriptionlundi 24 novembre 2008StatutMembreDernière intervention 8 janvier 2009
-
24 nov. 2008 à 15:34
Gnomed
Messages postés7Date d'inscriptionlundi 24 novembre 2008StatutMembreDernière intervention 8 janvier 2009
-
25 nov. 2008 à 09:42
Bonjour,
Je fait un programme en vb.net où j'ai besoin de calculer une très très grosse matrice (en fait l'ensemble des relations géométriques entre tous les points d'un maillage).
Le problème c'est qu'avec un maillage trop fin, et donc une matrice trop grande, j'ai une erreur de mémoire (System.OutOfMemoryException).
Or j'ai 2Go de Ram sur mon Pc et avec le maillage fonctionnel le plus fin le programme consomme au maximum 550Mo (en regardant dans le Gestionnaire de tâche, et je vois aussi qu'il reste de la Ram disponible). Cette limite de mémoire est-elle due à ma station ou à vb.net? En gros est-ce que si je fais tourner mon programme sur un sysyème avec 16Go je pourrais utiliser un maillage plus fin?
Je pense aussi qu'il est possible de se servir de fichiers directement enregistré sur le disque dur, je ne devrais pas avoir de manque de place du coup.
Si quelqu'un a des idées...
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 24 nov. 2008 à 18:50
Salut
Je ne connais pas de limite dû à l'utilisation de la mémoire dans .Net.
Peut-être s'agit-il d'une erreur liée à un nombre d'itérations grandissant, genre une boucle qui ne se referme jamais et qui oblige le processeur à empiler les appels.
Utilises-tu plutôt des For-Next ou bien des Do-Loop ?
Vérifie bien que tu n'utilises pas de "Goto" ou de "End Sub" qui ferait sortir le programme à l'intérieur d'une boucle.
Côté mémoire, XP a une limite de gestion à 3.45 Go, Vista doit avoir une limite bien supérieure
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Gnomed
Messages postés7Date d'inscriptionlundi 24 novembre 2008StatutMembreDernière intervention 8 janvier 2009 25 nov. 2008 à 09:42
J'utilise que des For-Next. Mais en fait c'est à la déclaration de la matrice que j'ai mon erreur.
Avec une matrice 11617x11617 ça passe mais avec une matrice 12151x12151 ça ne passe plus.