IronPDF에서 메모리 누수 해결하기

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

IronPDF에서 메모리 누수 현상이 발생하는 경우, 저희에게 알려주시기 바랍니다. 가장 경험이 풍부한 엔지니어들이 메모리 누수 문제가 발견되면 즉시 해결하기 위해 총력을 기울일 것입니다.

메모리 누수를 신고하는 방법은 다음과 같습니다.support@ironsoftware.com :

1. IronPdf를 최신 버전으로 업데이트하세요.

아직 IronPdf를 최신 버전으로 업데이트하지 않으셨다면, 지금 바로 업데이트해 주세요.

2. IDisposable 객체를 모두 폐기했는지 확인하십시오.

보고된 메모리 누수의 대다수는 .NET IDisposable 인터페이스를 잘못 사용함으로써 발생합니다.

만약 어떤 .NET 클래스에 Dispose() 메서드가 있다면, 그것은 아마도 IDisposable 메서드일 것이며 , 개발자는 사용이 끝나면 해당 메서드에 알려줘야 합니다.

C#은 개발자가 메모리를 관리할 필요가 없는 "관리형" 언어라는 오해가 흔히 있습니다. 이러한 통념과는 달리, 실제로 많은 개발자들이 해제하지 못하는 일반적인 .NET 객체가 많이 있습니다.

IDisposable 클래스 인스턴스를 수동으로 해제하지 않으면 코드에 메모리 누수가 발생할 수 있습니다.

  • System.IO.Stream - PdfDocument.Stream 속성에서 반환됩니다.
  • System.Drawing.Image / System.Drawing.Bitmap - PdfDocument.PageToBitmap 메서드에서 반환됩니다.
  • IronPdf.PdfDocument 자체도 2021년~2024년 후속 릴리스에서 관리되지 않는 개체를 포함할 수 있으므로 IDisposable로 표시됩니다.

가장 일반적인 해결책

가장 좋은 해결책은 using 객체를 참조할 때 IDisposable 문을 사용하는 것입니다.

using(var stream = myPdfDocument.Stream) {
    // Perform operations with the stream here
}
using(var stream = myPdfDocument.Stream) {
    // Perform operations with the stream here
}
$vbLabelText   $csharpLabel

C# 8에서는 {} 클로저가 없는 단축 버전도 있습니다.

using var stream = myPdfDocument.Stream;
// Perform operations with the stream here
using var stream = myPdfDocument.Stream;
// Perform operations with the stream here
$vbLabelText   $csharpLabel

3. 쓰레기 수거

Visual Studio 디버거의 메모리 프로파일러는 아무런 문제가 없더라도 메모리 사용량이 계속 증가하는 것을 보여줄 수 있습니다. RAM 용량이 큰 시스템을 사용할 때, .NET 런타임은 시스템 RAM이 거의 가득 찰 때까지 메모리에 불필요한 데이터를 남겨두거나 스왑 파일을 사용하여 데이터를 유지하는 것이 더 효율적이라고 판단할 수 있습니다.

.NET 가비지 컬렉터가 애플리케이션 수명 주기의 안전한 시점에 사용되지 않는 객체를 해제하도록 수동으로 지시할 수 있습니다.

  • PDF가 렌더링되지 않음
  • IDisposable 객체가 열려 있습니다.

이를 위한 한 가지 방법은 다음과 같습니다.

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

이후 메모리 사용량 그래프는 정상적인 수준(0은 아님)으로 떨어져야 합니다.

4. 메모리 누수가 여전히 발생하는 경우 - 신고하세요

이는 최우선 순위로 다뤄질 것입니다. 로그 파일을 찾는 방법과 추가 정보 요청 없이 문제를 보고하는 방법을 설명하는 이 가이드를 읽어보세요.

이 3분 분량의 자료를 읽어보시면 문제를 100% 정확하게 재현하여 고객님의 시간을 낭비하지 않도록 도와드릴 수 있습니다.

엔지니어링 요청 PDF

감사합니다 . 저희를 포함해서 누구도 메모리 누수를 좋아하지 않습니다. HTML 렌더링, 상호 운용성, 그래픽 및 스트림과 같은 "저수준" 또는 시스템 객체를 다룰 때는 이러한 기능이 가능해집니다. 그럼, 이 문제들을 해결해 봅시다!

IronPDF는 사용자 여러분의 버그 보고와 기능 요청에 귀 기울인 덕분에 오늘날과 같은 모습으로 발전할 수 있었습니다. 여러분의 성원에 진심으로 감사드립니다.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

시작할 준비 되셨나요?
Nuget 다운로드 17,527,568 | 버전: 2026.2 방금 출시되었습니다