Réparation des fuites de mémoire dans IronPDF
Si vous rencontrez une fuite de mémoire apparente dans IronPDF, nous voulons en être informés. Nos ingénieurs les plus expérimentés se précipiteront sur une fuite de mémoire pour travailler sur un correctif dès qu'elle sera identifiée.
Voici comment signaler une fuite de mémoire à support@ironsoftware.com :
1. Mettez à jour vers la dernière version d'IronPdf
Si ce n'est pas déjà fait, veuillez mettre à jour vers la dernière version d'IronPdf.
2. Assurez-vous d'avoir éliminé vos objets IDisposable
La grande majorité des fuites de mémoire signalées sont causées par une utilisation incorrecte de l'interface .NET IDisposable.
Si une classe .NET possède une méthode Dispose(), il s'agit probablement d'une méthode IDisposable et le développeur devra l'informer lorsqu'il aura fini de l'utiliser.
Il existe une idée reçue selon laquelle le C# est un langage " géré ", ne nécessitant aucune responsabilité du développeur pour gérer la mémoire. Contrairement à cette croyance, il existe en fait de nombreux objets .NET courants que les développeurs ne parviennent pas à éliminer.
- Utilisation des objets qui implémentent IDisposable
- Trouver, corriger et éviter les fuites de mémoire en C# .NET : 8 meilleures pratiques
Ne pas libérer manuellement chaque instance de classe IDisposable peut provoquer une fuite de mémoire dans votre code.
- System.IO.Stream - qui est renvoyé par la propriété
PdfDocument.Stream. - System.Drawing.Image / System.Drawing.Bitmap - qui est renvoyé par la méthode
PdfDocument.PageToBitmap. - IronPdf.PdfDocument - est lui-même marqué
IDisposableégalement, car il peut contenir des objets non gérés dans nos versions ultérieures 2021 - 2024.
La solution la plus courante
La meilleure solution consiste souvent à utiliser une instruction using lorsqu'on fait référence à des objets IDisposable.
using(var stream = myPdfDocument.Stream) {
// Perform operations with the stream here
}
using(var stream = myPdfDocument.Stream) {
// Perform operations with the stream here
}
Using stream = myPdfDocument.Stream
' Perform operations with the stream here
End Using
En C# 8, il existe même une version abrégée sans fermetures {}.
using var stream = myPdfDocument.Stream;
// Perform operations with the stream here
using var stream = myPdfDocument.Stream;
// Perform operations with the stream here
Dim stream = myPdfDocument.Stream
' Perform operations with the stream here
3. Collectez les déchets
Le profileur de mémoire du débogueur Visual Studio peut continuer à montrer une augmentation même si rien ne cloche. Lors de l'utilisation d'un système à mémoire RAM élevée, le runtime .NET peut décider qu'il est plus efficace de laisser les déchets rester en mémoire jusqu'à ce que la RAM de votre système soit presque pleine ou d'utiliser même un fichier d'échange pour le conserver.
Il est possible d'instruire manuellement le collecteur de déchets .NET pour éliminer ses objets inutilisés à un moment sûr dans le cycle de vie de votre application lorsque :
- Ne pas rendre un PDF
- Un objet
IDisposableest ouvert
Une manière de le faire est :
System.GC.Collect(); // Invokes the garbage collector
System.GC.WaitForPendingFinalizers(); // Waits for the process to complete
System.GC.Collect(); // Optional: Runs additional collection to ensure all objects are cleared
System.GC.Collect(); // Invokes the garbage collector
System.GC.WaitForPendingFinalizers(); // Waits for the process to complete
System.GC.Collect(); // Optional: Runs additional collection to ensure all objects are cleared
System.GC.Collect() ' Invokes the garbage collector
System.GC.WaitForPendingFinalizers() ' Waits for the process to complete
System.GC.Collect() ' Optional: Runs additional collection to ensure all objects are cleared
Après cela, le graphique d'utilisation de la mémoire devrait descendre à un niveau normal, mais non-nul.
4. Si vous avez toujours une fuite de mémoire - Signalez-la
Cela sera considéré comme une priorité extrêmement élevée. Veuillez lire ce guide, qui explique comment trouver vos fichiers journaux et signaler votre problème de manière à ce qu'aucune information supplémentaire ne soit demandée.
Cette lecture de 3 minutes nous aidera à reproduire votre problème avec une précision de 100 %, garantissant que nous ne perdrons pas votre temps.
Merci - Personne n'aime les fuites de mémoire, y compris nous. Lorsqu'on travaille avec des objets de " faible niveau " ou système tels que le rendu HTML, l'interopérabilité, les graphiques, et les flux, ils deviennent possibles. Alors résolvons-les!
IronPDF n'est devenu ce qu'il est aujourd'hui qu'en écoutant les rapports de bogues et les demandes de fonctionnalité de nos utilisateurs, alors merci pour votre soutien.

