Est-il possible de récupérer la mémoire perdue de w3wp.exe? Je pensais qu'un session.abandon() devrait éclaircir les ressources comme ça? La chose est que j'ai une application web, certaines pages font grandir w3wp.exe de manière significative. Comme de 40 Mo à 400 Mo. Maintenant, je vais optimiser mon code de manière défiante afin de réduire cela, mais quelle que soit la taille du w3wp.exe, n'y a-t-il aucun moyen de récupérer la mémoire perdue même lorsque l'utilisateur s'est déconnecté et fermé le navigateur? Je sais que ce processus de travail sera recyclé après 30 minutes (par défaut) d'utilisation inactive, mais que se passe-t-il s'il n'y a pas d'utilisation inactive pendant longtemps et que le processus de travail a encore cette partie de la mémoire? croissance? Des gens de pensées?Récupérer de la mémoire à partir de w3wp.exe
Répondre
Le garbage collector se chargera de la mémoire qui doit être libérée, à condition que vous disposiez les choses correctement, etc. Le GC ne démarre pas immédiatement chaque fois que vous appelez Session.Abandon(), car ce serait un coup de performance majeur. Cela dit, chaque application a une utilisation de la mémoire "normale", c'est-à-dire une utilisation stable de la mémoire (là encore, à condition que vous n'ayez pas de fuites), et cette figure est différente pour chaque application. 400 Mo peuvent être très élevés ou peuvent ne pas fonctionner, selon ce que fait votre application. J'ai des applications qui tournent autour de 400 Mo et d'autres autour de 1,5 Go et c'est OK tant que l'utilisation de la mémoire se stabilise quelque part. Si vous voyez une utilisation de la mémoire illimitée alors vous avez probablement une fuite quelque part dans votre application.
Le stockage de grandes quantités de données dans la session en cours peut également accélérer l'utilisation de la mémoire. Au lieu de cela, utilisez un fichier ou une base de données pour stocker ces données.
Eh bien, fondamentalement, je ne dispose d'aucun objet. Je pensais que la partie 'utilisation' de C# devrait prendre soin de l'entreprise qui dispose? Et oui mon déploiement de production ne fait pas de session.abandon(). Je viens de le réaliser et je mettrai cela sur le code mais cela ne sera peut-être pas très utile puisque 99,9% des utilisateurs ne prennent pas la peine d'appuyer sur le bouton de déconnexion, ils ferment simplement le navigateur. – xeshu
sauf si vous perdez de la mémoire, le gestionnaire de mémoire réutilisera cette mémoire, vous ne devriez donc pas voir la mémoire de processus continuer de grandir.
hmmm réutilisation, maintenant c'est un concept intéressant ... – xeshu
Voyez-vous l'empreinte mémoire du service augmenter lorsque vous démarrez une nouvelle session après la fermeture d'un ancien? – Achilles
Oui. Mon w3wp.exe va à 400 Mo sur une page spécifique, même après la déconnexion de l'utilisateur (session.abandon()), l'utilisateur suivant arrive, visite cette page et le fichier w3wp.exe passe à 700 Mo. – xeshu
Il semble que vous mettez énormément de données dans la session. Au lieu de cela, utilisez un fichier ou une base de données pour stocker de grandes quantités de données. –