Corrigindo vazamentos de memória no IronPDF

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

Se você estiver enfrentando um aparente vazamento de memória no IronPDF, gostaríamos de saber. Nossos engenheiros mais experientes se mobilizarão em conjunto para trabalhar em uma solução rápida para o vazamento de memória assim que for identificado.

Veja como reportar um vazamento de memória parasupport@ironsoftware.com :

1. Atualize para a versão mais recente do IronPDF.

Caso ainda não o tenha feito, atualize para a versão mais recente do IronPDF .

2. Certifique-se de que você tenha liberado seus objetos IDisposable

A grande maioria dos vazamentos de memória relatados são causados por uso inadequado da interface .NET IDisposable.

Se qualquer classe .NET tiver um método Dispose() - é provavelmente IDisposable e exigirá que o desenvolvedor indique quando terminar de usá-lo.

Existe um equívoco comum de que C# é uma linguagem "gerenciada", que não exige que o desenvolvedor se preocupe com o gerenciamento de memória. Contrariando essa crença, existem, na verdade, muitos objetos comuns do .NET dos quais os desenvolvedores não se desfazem.

Falhar em liberar manualmente cada instância da classe IDisposable pode causar um vazamento de memória no seu código.

  • System.IO.Stream - que é retornado pela propriedade PdfDocument.Stream.
  • System.Drawing.Image / System.Drawing.Bitmap - que é retornado pelo método PdfDocument.PageToBitmap.
  • IronPdf.PdfDocument - ele mesmo é marcado como IDisposable também, pois pode conter objetos não gerenciados em nossos lançamentos posteriores de 2021 - 2024.

A solução mais comum

A melhor solução muitas vezes é usar uma declaração using ao se referir a objetos 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

No C# 8, há até uma versão abreviada sem fechamentos {}.

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. Recolher o lixo

O analisador de memória do depurador do Visual Studio pode continuar mostrando um aumento mesmo que não haja nada de errado. Ao usar um sistema com muita RAM, o runtime do .NET pode decidir que é mais eficiente permitir que dados inválidos permaneçam na memória até que a RAM do sistema esteja quase cheia, ou até mesmo usar um arquivo de paginação para armazená-los.

É possível instruir manualmente o coletor de lixo do .NET a descartar seus objetos não utilizados em um ponto seguro do ciclo de vida do seu aplicativo quando:

  • Não renderiza um PDF
  • Um objeto IDisposable está aberto

Uma maneira de fazer isso é:

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

Após isso, o gráfico de utilização de memória deverá cair para um nível normal, porém diferente de zero.

4. Se o problema de vazamento de memória persistir, reporte-o.

Isso será tratado como uma prioridade extremamente alta. Por favor, leia este guia, que explica como encontrar seus arquivos de registro e relatar seu problema de forma que não sejam solicitadas informações adicionais.

Esta leitura de 3 minutos nos ajudará a reproduzir seu problema com 100% de precisão, garantindo que não desperdicemos seu tempo.

Solicitação de Engenharia (PDF)

Obrigado - Ninguém gosta de vazamentos de memória, inclusive nós. Ao trabalhar com objetos de "baixo nível" ou de sistema, como renderização HTML, interoperabilidade, gráficos e fluxos, eles se tornam possíveis. Então vamos consertá-los!

O IronPDF só se tornou o que é hoje graças aos relatórios de erros e pedidos de novas funcionalidades dos nossos usuários, por isso agradecemos o seu apoio.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Downloads 18,318,263 | Versão: 2026.4 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronPdf
executar um exemplo Veja seu HTML se transformar em um PDF.