Matrice(Tableau) trop grande et erreur mémoire (System.OutOfMemoryException)

Gnomed Messages postés 7 Date d'inscription lundi 24 novembre 2008 Statut Membre Dernière intervention 8 janvier 2009 - 24 nov. 2008 à 15:34
Gnomed Messages postés 7 Date d'inscription lundi 24 novembre 2008 Statut Membre Derniè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...

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
Gnomed Messages postés 7 Date d'inscription lundi 24 novembre 2008 Statut Membre Derniè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.
0
Rejoignez-nous