이 페이지에서는 dotMemory의 최신 업데이트와 변경 사항을 자세히 설명합니다.
30일 무료 평가 이용 가능
2024.3 업데이트에는 작지만 다양한 UX/UI 개선이 도입되었으며, 모든 운영 체제의 모든 dotMemory 버전에 통일된 모양과 느낌을 주는 디자인을 완성시켰습니다.
이전에 UI를 새롭게 디자인하는 과정에서 제거했던 Creation Stack Trace(생성 스택 추적) 뷰를 다시 도입했습니다. 이 뷰에는 객체를 생성시킨 함수 호출 스택이 표시되므로 메모리 문제의 근본 원인을 보다 쉽게 찾아낼 수 있습니다.
객체 세트에 대한 <0>Back Traces(역추적)0> 뷰도 다시 구현했습니다. 이 뷰의 역전된 호출 트리는 특정 객체 세트를 생성한 함수에서 시작하여 아래에서 위로 이동하며 호출 체인을 보여줍니다.
이제 도미네이터 트리를 고드름 차트로 표시하여 도미네이터와 보존된 객체의 메모리 사용량을 확인할 수 있습니다. 이 기능은 Windows, Linux 및 macOS용 dotMemory 독립 실행형 버전과 JetBrains Rider의 dotMemory 모두에서 사용할 수 있습니다.
2024.2 버전에 도입된 Call Tree(호출 트리)를 선버스트 차트로 시각화하는 기능을 이제 Windows, Linux 및 macOS용 dotMemory 독립 실행형 버전과 JetBrains Rider의 dotMemory 모두에서 사용할 수 있습니다.
Instances(인스턴스) 뷰에 새로운 필터 옵션이 추가되었습니다.
^nAsso.{5,}ID$
는 nAssociatedObjectID.nAssociatedObjectID
와 일치합니다. 이러한 기능은 dotMemory의 독립 실행형 버전 및 JetBrains Rider 내의 dotMemory에서 사용할 수 있습니다.
dotMemory의 Linux 및 macOS 버전에도 이전에 Windows에서만 제공되던 기능이 추가되었습니다.
이러한 기능은 dotMemory의 독립 실행형 버전 및 JetBrains Rider 내의 dotMemory에서 사용할 수 있습니다.
Call Tree(호출 트리)를 Sunburst(선버스트) 차트로 표시할 수 있으며, 메모리를 가장 많이 할당하는 함수가 강조 표시됩니다. 이 기능은 dotMemory의 독립 실행형 버전(Linux 및 macOS)과 JetBrains Rider 내의 dotMemory(Windows, Linux 및 macOS)에서 사용할 수 있습니다.
이제 MAUI 프레임워크를 기반으로 애플리케이션을 프로파일링할 수 있습니다.
현재 dotMemory는 Windows에서 .NET 7.0 이상을 대상으로 하는 WinUI 애플리케이션의 프로파일링을 지원합니다.
이 지원은 dotMemory 독립실행형과 Rider 및 ReSharper에 통합된 dotMemory에 제공됩니다.
.app
)을 지정할 수 있습니다. net7.0-macos
, net8.0-macos
Linux 및 macOS용 dotMemory 독립실행형 버전은 다음과 같은 기능을 제공하여 Windows 버전에 더 가까워졌습니다.
고정된 객체 힙에 있는 변경할 수 없는 객체에 대한 정보는 타임라인, Heap Fragmentation(힙 조각화) 다이어그램 및 Generations(생성) 뷰에 표시됩니다.
이제 Linux 및 macOS 운영 체제에서 dotMemory의 독립 실행형 버전을 실행할 수 있습니다.
이제 dotMemory를 사용하면 Linux에서 프로세스 덤프를 일반 스냅샷으로 가져오고 분석할 수 있습니다. dotMemory의 Linux 버전은 Linux OS에서 실행되는 프로세스에서 수집된 덤프만 가져올 수 있습니다.
2023.2 이전에는 메모리 할당 분석을 위해서만 Rider에서 dotMemory를 사용할 수 있었습니다. 2023.2에서는 dotMemory의 독립실행형 버전과 마찬가지로 Rider에서 메모리 스냅샷을 수집하고 이를 분석할 수 있습니다.
이제 Windows의 ARM64 CPU에서 dotMemory를 사용할 수 있습니다. 이는 dotMemory 독립실행형, Rider의 dotMemory, Visual Studio의 dotMemory 및 dotMemory 명령줄 도구의 모든 버전에 적용됩니다.
이제 Linux의 ARM32 CPU에서 dotMemory 명령줄 프로파일러를 실행할 수 있습니다. 지원되는 프레임워크는 .NET Core 3.1 및 .NET 5.0~7.0입니다.
Windows뿐 아니라 Linux 및 macOS에서도 JetBrains Rider에 dotMemory를 사용할 수 있습니다. Run(실행) 위젯과 Run(실행) | Switch profiler configuration(프로파일러 구성 전환) 메뉴에서 두 가지 새로운 프로파일링 모드인 Memory (sampled allocations)(메모리(샘플 할당)) 및 Memory (full allocations)(메모리(전체 할당))를 사용할 수 있습니다. dotMemory의 도움말에서 차이점을 자세히 알아볼 수 있습니다.
Run(실행) 메뉴의 실행 프로세스에 프로파일러를 연결하고 실시간으로 Timeline Graph(타임라인 그래프)를 확인할 수 있습니다. dotMemory Standalone에서와 마찬가지로, Memory Allocations(메모리 할당) 뷰를 여는 간격을 선택하세요. 이 뷰에서 할당된 객체 및 특정 기간의 할당 호출 트리를 분석할 수 있습니다.
아쉽게도 이 버전에서는 아직 메모리 스냅샷을 수집할 수 없습니다.
이제 명령줄 프로파일러에 --saving-mode
인수가 있어 dotMemory 작업 공간을 저장할 시기에 대한 조건을 설정할 수 있습니다.
이제 JetBrains Rider에서 바로 dotMemory를 사용할 수 있습니다.
dotMemory 플러그인은 스냅샷 수집을 허용하지 않으며 2022.2 릴리스에서는 Windows에서만 작동합니다.
dotMemory 명령줄 도구가 이제 Alpine 버전 3.13~3.15를 지원합니다. 다음 CPU 및 프레임워크가 지원됩니다.
프로파일링 API를 사용하여 스냅샷을 가져올 때 이제 DotMemory.GetSnapshot("snapshot name");
을 사용하여 스냅샷 이름을 지정할 수 있습니다.
이름은 dotMemory Home(홈) | Snapshots(스냅샷) 페이지에 표시됩니다.
스냅샷을 저장할 때 이제 dotMemory 명령줄 도구에 진행률이 표시됩니다.
Similar Retention(유사한 보존) 뷰에서 이제 데이터가 훨씬 빠르게 처리됩니다.
이제 dotMemory 명령줄 도구가 Apple Silicon 프로세서가 탑재된 컴퓨터에서 작동합니다. 이제 dotMemory CLT를 사용하여 .NET 6 애플리케이션(네이티브 모드) 및 .NET 5 애플리케이션(Rosetta 2 모드)을 프로파일링할 수 있습니다.
도미네이터 트리(객체 보존 그래프)의 알고리즘을 완전히 재작업했습니다. 객체 세트에 수억 개의 객체가 포함되어 있어도 dotMemory가 지정된 뷰를 여는 데 몇 분밖에 걸리지 않습니다.
이제 dotMemory는 ETW 이벤트를 기반으로 샘플링된 메모리 할당 데이터를 가져올 수 있습니다. 할당 데이터를 수집하는 기존의 (통계적인) 방법과 비교할 때 샘플링 정확도는 떨어지지만 다음과 같은 많은 이점이 있습니다.
이 기능은 Windows에서만 사용 가능합니다.
이제 Subsystems(하위 시스템) 뷰를 사용하여 메모리 할당 데이터를 분석할 수 있습니다. 하위 시스템은 동일한 타입, 네임스페이스 또는 어셈블리에 속하는 모든 메서드를 그룹화합니다. 결과 뷰에는 하위 시스템에서 생성된 객체와 각 하위 시스템의 병합된 호출 트리가 표시됩니다.
이번 릴리스에서 메모리 할당의 분석 방식이 한층 개선되었습니다. 두 개의 새 탭이 Memory Allocation(메모리 할당) 뷰에 추가되었습니다.
dotMemory 뷰 상단의 검색창이 더욱 유연하고 사용하기 쉽게 개선되었습니다.
이제 다음을 수행할 수 있습니다.
이제 서비스 메시지를 사용하여 메모리 할당 데이터 수집을 활성화 및 비활성화할 수 있습니다.
ReSharper를 사용하면 dotMemory의 클립보드에 복사된 스택 추적을 Rider/Visual Studio에서 자동으로 열 수 있습니다.
dotMemory 홈 화면을 완전히 새롭게 작업했습니다. 이제 새 프로파일링 세션을 구성 및 시작하고, 스냅샷으로 작업하고, 기타 기본적 작업을 수행하기가 훨씬 더 쉬워졌습니다.
이제 gcore
를 사용하여 Linux 시스템에서 수집된 .NET Core 애플리케이션의 덤프를 분석할 수 있습니다.
이제 dotMemory를 사용하여 임의의 시간 간격으로 메모리 할당을 분석할 수 있습니다. 타임라인에서 간격을 선택하기만 하면 Memory Allocation(메모리 할당) 뷰에 이 간격에 할당된 객체와 이를 할당한 스택 추적이 표시됩니다.
30일 무료 평가 이용 가능