2011-01-31 2 views
1

Application Visual Studio 2008 utilisant C++ sous Windows XP.L'application Windows consomme trop de mémoire. Des conseils?

Des conseils utiles au-delà du conseil "Toujours supprimer de nouveaux objets"? Edit: En fait, je suis à la recherche de quelques conseils de programmation.

+1

Acheter plus de mémoire? Soit cela ou exécuter un profileur de mémoire. C'est bête de donner des conseils génériques pour ce genre de situation. Déterminez * où * vos fuites de mémoire sont, puis corrigez-les. –

+2

Votre question ne précise pas si l'application perd de la mémoire ou si elle consomme beaucoup de mémoire car elle doit conserver beaucoup de données en mémoire en même temps. –

+0

Où va la mémoire? Est-il divulgué ou utilisé? – sharptooth

Répondre

0

Cela dépend ce que vous entendez par "consomme trop de mémoire".

A) Par conception, c'est-à-dire qu'il nécessite de charger ou de générer de grandes structures de données que vous pensez causer des problèmes.

Dans ce cas, est-ce i) une trop grande quantité de mémoire phyique, c'est-à-dire qu'elle ralentit parce que le disque dur commence à échanger des pages et/ou d'espace? la mémoire?

Pour ii) envisager d'utiliser 64bit construit, envisagez d'utiliser la mémoire partagée pour stocker de grandes structures de données, méfiez-vous de la fragmentation - allouent grands tampons début, cassez les grandes structures de données en plus petites

B) Il vous surprend en utilisant beaucoup de mémoire. Trouvez vos fuites ou bugs - différents profileurs disponibles ou studio visuel construit dans des crochets d'allocation de débogage. Avez-vous de l'arithmétique cassée pour calculer la taille des tampons (en particulier les enveloppes intempestives accidentelles)?

Utilisez des pointeurs intelligents pour gérer la suppression.

+0

Fondamentalement, mon application reçoit des messages de MSMQ et les enregistre dans une base de données (SQL Server). – Chrys

+0

@Chrys - Libérez-vous vos ressources MQ ainsi que vos ressources Db inutilisées? –

+0

En fait, mon erreur était que je n'ai pas suivi le conseil que j'ai écrit ci-dessus (toujours supprimer de nouveaux objets). Merci pour les conseils cependant. – Chrys

0

En supposant que vous avez une fuite de mémoire, il y a une solution gratuite pour lancer le problème avant d'acheter/exécuter d'autres profils, et c'est UMDH. Il peut détecter la plupart des fuites de mémoire, si c'est votre situation.

http://support.microsoft.com/kb/268343

Questions connexes