Fixing Memory Leaks in IronPDF

This article was translated from English: Does it need improvement?
Translated
View the article in English

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 disposé de 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 dispose d'une méthode Dispose() - elle est probablement IDisposable et nécessitera que le développeur l'indique lorsqu'il a terminé 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.

Ne pas disposer manuellement de 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 - lui-même est marqué IDisposable également, car il peut contenir des objets non gérés dans nos versions ultérieures de 2021 à 2024.

La solution la plus courante

La meilleure solution est souvent d'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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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 IDisposable est 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
$vbLabelText   $csharpLabel

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.

Ordre d'ingénierie PDF

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.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 16,154,058 | Version : 2025.11 vient de sortir