Obtenir une OutOfMemoryException tout serialising en JSON?
Je suis la sérialisation , un MultiDictionary<String,Object>
http://powercollections.codeplex.com/json .
Il a 618 éléments avec les éléments qui y sont profondément imbriquées ,c'est à dire un seul Objet peut avoir plusieurs dictionnaire comme des objets . Je suis à l'aide de JSON.Net
String json = JsonConvert.SerializeObject(json, Newtonsoft.Json.Formatting.Indented);
ce qui me manque ?
PLUS D'INFOS: -
Cela fonctionnait bien jusqu'à ce que je a été à l'aide de dynamique , j'ai dû passer à MultiDictionary pour permettre à de multiples propriétés du même nom . Il fonctionne dans la plupart des cas , uniquement lorsque le nombre de points est grand , il se casse .
Mise à JOUR: -
J'ai été en mesure d'obtenir une prise de la consommation de Mémoire mais la coupe vers le bas sur certains éléments qui ont été s'ajouter de manière récursive pour chaque élément.
OriginalL'auteur ashutosh raina | 2011-12-25
Vous devez vous connecter pour publier un commentaire.
Il semble que vous êtes en cours d'exécution dans Ciruclar De Référence qui est à l'origine
OutOfMemoryException
ou vos objets sont tout simplement trop grand pour votre mémoire. Utilisation NDepend pour vérifier cela.Que vous pourriez trouver utiles obtenir la taille totale de vos objets.
NDepend, voir mon édité répondre
href="http://www.ndepend.com/Features.aspx#DependencyCycle" >ndepend.com/Features.aspx#DependencyCycle semble être l'outil le plus utilisé par tout le monde
OriginalL'auteur Tomislav Markovski
En supposant que vous n'avez pas de Références Circulaires - si vous ne pouvez pas stocker le tout dans l'utilisation de la mémoire d'un StreamWriter(JsonWriter ou TextWriter) dans Newtonsoft v4.0.30319
Utilisation JsonWriter si vous essayez de passer la chaîne
OriginalL'auteur Sam
C'est difficile à dire sans connaître la structure exacte des objets sérialisés, mais il est possible que, depuis, l'objet graphique est tellement grand, il y a peut être des références circulaires quelque part (un objet qui pointe vers un objet qui pointe vers le premier objet), la création d'une boucle infinie de sérialisation.
EDIT :
Vous pouvez utiliser un outil, comme NDepend, à savoir où sont les références circulaires. Donner la version d'essai de l'essayer.
OriginalL'auteur Óscar López