nous avons une application Delphi assez complexe, qui utilise des assemblages .NET. Nous utilisons FastMM comme gestionnaire de mémoire.Delphi Windows Desktop App -> 513 Mo d'utilisation de la mémoire au lancement -> 32,1 Mo après 50 minutes d'état inactif
Nous avons rencontré des exceptions EOutOfMemory. J'ai donc enquêté sur ça pendant un moment maintenant. Nous soupçonnions que nous avions des références circulaires entre les objets Delphi. Ou peut-être certains objets .NET contenant des références à des objets Delphi, empêchant leur publication. Jusqu'à présent, je n'ai rien trouvé que nous pourrions changer de notre côté, ce qui est vraiment frustrant parce que, évidemment, nous avons un problème quelque part.
Mais aujourd'hui, par pur hasard, j'ai découvert quelque chose. Lorsque notre application démarre, le gestionnaire des tâches rapporte ca. 513 Mo de mémoire utilisée. Je viens de le lancer mais j'ai dû partir pour le déjeuner. Quand j'étais de retour, par hasard, j'ai remarqué que l'application utilisait maintenant seulement 75 Mo. Étrange je pensais, doit avoir écrasé ou quelque chose que je supposais. Non, pas du tout, App fonctionnait parfaitement. Qu'avais-je fait -> Rien. Laissez-le simplement tourner au ralenti. Notre application est une application de bureau Windows. Il ne se passe pas grand-chose tant que c'est dans un état inactif.
Alors j'ai alors commencé à regarder plus loin dans cela. Il est reproductible. La consommation de mémoire commence à diminuer en gros sauts au fil du temps. Après ca. 50 minutes, il avait atteint 32,1 Mo !!!
J'ai surveillé les compteurs de performance .NET Garbage Collector et il n'y a pas de gros changements. Par conséquent je suspecte que le problème soit du côté de Delphi -> qui pointe à FastMM.
Je ne suis pas un expert avec FastMM cependant. Je me suis assuré et FullDebugMode n'est pas activé. Est-ce que quelqu'un d'autre a vécu quelque chose comme ça? Avez-vous des astuces/idées sur ce qui pourrait être mal configuré dans FastMM?
Merci un million !!
@DavidHeffernan Vous semblez avoir beaucoup d'expérience concernant les gestionnaires Delphi-Memory. :-). Je serais très reconnaissant si vous pouviez commenter si vous avez eu une expérience similaire. THX! – santiagoIT
Vous ne pouvez pas adresser de questions à des utilisateurs spécifiques ici, et vous ne pouvez pas leur envoyer un ping en utilisant la notation @ à moins qu'ils aient d'abord commenté ou que vous commentiez leur réponse. Ce n'est pas un site de média social, et vous ne recevez pas de support technique personnel de votre utilisateur préféré. –
@KenWhite Merci pour l'info! Bon à savoir. Bien, espérons qu'il va se heurter à cette question.Je sais par d'autres questions de SO que David utilise son propre MemoryManager et en a essayé plusieurs. Donc, sa contribution serait très utile. – santiagoIT