J'ai un très petit service wcf hébergé dans une application de console.Fuites de mémoire de service WCF
[ServiceContract]
public interface IService1
{
[OperationContract]
void DoService();
}
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall)]
public class Service1 : IService1
{
public void DoService()
{
}
}
et son être appelé comme
using (ServiceReference1.Service1Client client = new ServiceReference1.Service1Client())
{
client.DoService(new DoServiceRequest());
client.Close();
}
S'il vous plaît rappelez-vous que le service est publié sur basicHttpBindings.
Problème
Maintenant, quand je fis au-dessus du code client dans une boucle de 1000 i trouvé grande différence entre « Tous les octets Heap » et les compteurs de performance « Octets privés » (i utilisé la mémoire .net profileur). Après enquête, j'ai trouvé certains des objets ne sont pas correctement disposés suivant sont la liste de ces objets (1000 instance non-disposées ont été trouvés -> est égale aux appels client)
(espace de noms pour tous est System.ServiceModel. canaux)
HttpOutput.ListenerResponseHttpOutput.ListenerResponseOutputStream
BodyWriterMessage
BufferedMessage
HttpRequestContext.ListenerHttpContext.ListenerContextHttpInput.ListenerContextInputStream
HttpRequestContext.ListenerHttpContext
questions Pourquoi nous avons beaucoup d'objets et comment non aliéné les contrôler.
Aide S'il vous plaît
Cela ressemble à une fuite de la bibliothèque système. Le code client (comme dans le service écrit par l'utilisateur) ne touche pas à ces tampons et à ces flux, et il semble que WCF ne les dispose pas. –
Mabushar: Avez-vous eu de la chance avec ça? Je semble avoir un problème similaire. – bugfixr
@bugfixr frère désolé j'ai remarqué votre message aujourd'hui, je ne me souviens pas si je pouvais me débarrasser de ceux mais une chose que je me souviens était que je suis passé à framework 4.0 du cadre 3.5, il a aidé partiellement ou totalement je ne souvenez-vous, mais cela m'a aidé d'une certaine manière. Désolé pour la réponse tardive. –