binouse1305
Messages postés17Date d'inscriptionmercredi 22 septembre 2004StatutMembreDernière intervention30 janvier 2008
-
30 janv. 2008 à 12:23
binouse1305
Messages postés17Date d'inscriptionmercredi 22 septembre 2004StatutMembreDernière intervention30 janvier 2008
-
30 janv. 2008 à 16:30
Bonjour,
Dans mon application serveur, lors de la sérialisation d'objets j'ai une erreur outofmemory. Apparemment ce là se produit lors de l'appel à la méthode Serialize.
ms = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(ms, data);
data est de type object.
Normalement la mémoire est bien libérée puisque dans le finally je ferme bien mon MemoryStream :
finally
{
if (ms != null)
{
ms.Close();
ms = null;
}
}
Miltiades
Messages postés233Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention25 octobre 2010 30 janv. 2008 à 13:46
Bonjour,
essaye de mettre un ms.Dispose() apres le close... parce que la tu ne libere pas ton objet, et si le garbage collector est un peu faineant (config par defaut) il ya fort a parier qu'il ne nettoye pas de suite ton objet...
Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 200813 30 janv. 2008 à 14:11
Si l'erreur est effectivement lévée lors de l'appel à Serialize, je ne vois pas en quoi le code qui suis dans le finally pourrait avoir un impact.
Tu dis que "data" est de type object, mais de quel genre de données s'agit il exactement? (quelle taille en particulier ? un constructeur par default avec du code spécifique ?)
binouse1305
Messages postés17Date d'inscriptionmercredi 22 septembre 2004StatutMembreDernière intervention30 janvier 2008 30 janv. 2008 à 14:17
Je bosse pour une boîte qui prend des commandes et je bosse sur leurs logiciels.
Les objets sont de type Client. 99% du temps la sérialisation se passe très bien et parfois on a un outofmemoty qui fait planter les services.
Mon constructeur est private dans une classe internal
Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 200813 30 janv. 2008 à 14:27
Je pense que le problème viens de l'objet que tu sérialise, mais difficile de dire comme ça d'où pourrais venir le problème exactement... L'objet est il réellement volumineux ? As tu besoin de sérialiser toutes les propriétés de l'objet ? L'object en question contient-il d'autres objects volumineux (genre dataset) ? etc...
Miltiades
Messages postés233Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention25 octobre 2010 30 janv. 2008 à 14:32
j'avais pas fait gaffe que ms etait le flux, m'apprendra a faire ca entre deux au boulot...
sinon je suis de l'avis de Nikoui, ca viens de ce que tu mets dans le flux, t'as peut etre a un moment un data "plus volumineux" (genre un dataset remplis... ca, ca peut etre volumineux)
binouse1305
Messages postés17Date d'inscriptionmercredi 22 septembre 2004StatutMembreDernière intervention30 janvier 2008 30 janv. 2008 à 14:42
En fait mon objet est un collection de clients. Cette collection une fois sérialisée peut faire entre 1 et 8Mo. on n'a jamais vu plus de 8Mo. (moins de 100 clients)
L'objet est relativement volumineux car nous embarquons beaucoup de données concernant les clients sur leurs anciennes commandes etc...
Pas de dataset.
Nous sommes obligés de sérialiser toutes les propriétés.
binouse1305
Messages postés17Date d'inscriptionmercredi 22 septembre 2004StatutMembreDernière intervention30 janvier 2008 30 janv. 2008 à 16:30
Ouais j'ai l'impression que ça arrive au bout d'un certain nombre de sérialisation/déserialisations.
Si tu veux que je t'envoie du code donne-moi ton e-mail. J'ai une adresse msn aussi si tu voudras qu'on en parle.