2009-07-20 9 views
1

SandCastle ne peut pas traiter notre bibliothèque de classes car elle se bloque avec une exception OutOfMemoryException lors de la transformation XSL.SandCastle et OutOfMemoryException

Que pouvons-nous faire à ce sujet, sauf pour l'évident, acheter plus de mémoire? Le problème est que ce sont nos machines de développement avec 3,3 Go de mémoire sur un OS 32 bits, donc nous devons soit mettre à niveau vers la mémoire 64 bits et plus (ce qui n'arrivera pas pendant un certain temps) ou configurer un serveur virtuel pour faites-le avec beaucoup de mémoire (ce qui aura un impact sur les serveurs de production).

Je doute sérieusement que nous ayons la plus grande bibliothèque de classes au monde qui nécessite des fichiers d'aide, alors quelles options avons-nous? Y a-t-il un réglage magique "Ne plantez pas avec des erreurs de mémoire" que nous avons oublié de désactiver?

Répondre

1

Si vous utilisez Windows 32 bits, votre processus utilisateur ne pourra traiter que 2 Go de mémoire par défaut (3 Go s'exécutent en tant que grande adresse). Les 2 Go sont utilisés pour tout le processus, donc le runtime .NET, les bibliothèques standard, la réservation et ainsi de suite tous prennent leur mandrin. Dans mon expérience, cela laisse environ 1,5 Go pour les applications .NET sur 32 bits.

Vous pouvez accéder à plus de mémoire en utilisant le commutateur de grande adresse, mais ce n'est pas gratuit si vous utilisez Windows 32 bits. Passer à Windows 64 bits permettra à votre application 32 bits d'accéder à l'espace d'adressage complet de 32 bits et vous donnera ainsi 4 Go d'espace adressable.

J'ai récemment écrit une entrée de blog avec des détails sur l'utilisation de la mémoire pour les applications .NET, mais comme je blogue en danois, vous ne pourrez peut-être pas le lire. Cependant, si vous voulez jeter un oeil, le lien est: http://kodehoved.dk/?p=156

Vous pouvez également trouver ce blog MSDN concerné: http://blogs.msdn.com/maoni/archive/2007/05/15/64-bit-vs-32-bit.aspx

+0

Alors que je vais essayer, il n'a pas enregistré moi que nous n » t activé/support 3GB pour nos ordinateurs, donc je vais devoir faire cela. La question est encore de savoir si c'est juste une solution temporaire (en supposant que cela corrige notre problème actuel). Sandcastle utilisera-t-il juste autant de mémoire et il n'y a aucun moyen de lui demander de ne pas le faire? –

+0

Désolé, je ne peux pas dire. Ma réponse est principalement des conseils généraux sur l'utilisation de la mémoire. –