Überwachung des .NET-Prozessspeichers in Linux/WSL

Curtis Chau
Curtis Chau
Updated: 29. Juni 2026

Ressourcenintensive .NET-Arbeit, wie OCR, PDF-Erstellung oder Bildverarbeitung, kann in eingeschränkten Umgebungen wie WSL (Windows Subsystem für Linux) oder Linux-Containern schwer zu skalieren sein. Sie können den Speicherverbrauch eines Prozesses in Echtzeit direkt von einer Konsolenanwendung aus protokollieren oder ihn extern mit Standard-Linux-Tools überwachen.

Voraussetzungen

  • .NET-SDK installiert, Version 5.0 oder später.
  • Eine Linux-Umgebung, entweder nativ oder über WSL.
  • Eine grundlegende .NET-Konsolenanwendung.

Lösung

1. Speichernutzung in der Konsole protokollieren

Lesen Sie die private Speichergöße des Prozesses aus und drucken Sie sie in Megabyte aus:

using System;
using System.Diagnostics;
class Program
{
static void Main(string[] args)
{
// Trigger your memory-consuming logic here (e.g., OCR, PDF generation, etc.)
// Log memory usage
Process currentProcess = Process.GetCurrentProcess();
long memorySize = currentProcess.PrivateMemorySize64; // In bytes
Console.WriteLine($"Memory Usage: {memorySize / (1024 * 1024)} MB");
}
}

PrivateMemorySize64 gibt die Menge des Speichers in Byte zurück, die der Prozess ausschließlich belegt und nicht mit anderen Prozessen teilt. Es ist ein solider Indikator dafür, wie stark Ihre Anwendung läuft.

2. Speichern kontinuierlich verfolgen

Für einen langlaufenden Prozess falten Sie das Lesen in eine Schleife ein, um die Nutzung im Laufe der Zeit zu erfassen:

while (true)
{
var memory = Process.GetCurrentProcess().PrivateMemorySize64;
Console.WriteLine($"Memory Usage: {memory / (1024 * 1024)} MB");
Thread.Sleep(5000); // Log every 5 seconds
}

Der Thread.Sleep(5000)-Aufruf begrenzt das Logging auf eine Abfrage alle fünf Sekunden. Leiten Sie die Ausgabe an eine Datei oder einen anderen Prozess weiter oder verwenden Sie sie, um Alarme auszulösen, wenn die Nutzung einen Schwellenwert überschreitet.

Konsolenausgabe

Memory Usage: 214 MB
Text

Option: Extern mit Linux-Tools überwachen

Um einen Prozess von außerhalb der Anwendung zu beobachten, verwenden Sie eines der Standard-Utilities. <pid> ist die Prozess-ID, die eindeutige Nummer, die das Betriebssystem jedem laufenden Prozess zuweist.

top oder htop: beobachten Sie einen einzelnen Prozess live.

top -p <pid>
SHELL

ps: Drucken Sie eine einmalige Momentaufnahme der Speicherfelder.

ps -o pid,vsz,rss,comm -p <pid>
SHELL

Hier ist VSZ die Größe des virtuellen Speichers in KB und RSS ist die Resident Set Size, der physische Speicher in Nutzung.

smem: installieren Sie es für eine detailliertere prozessweise Aufschlüsselung.

sudo apt install smem
smem -p <pid>
SHELL

Bewährte Verfahren

  • Führern Sie die Speicherverfolgung in Testumgebungen durch, bevor Sie die Produktion einsetzen.
  • Für langlaufende Dienste oder APIs integrieren Sie einen Metrikstapel wie Prometheus oder Grafana.
  • Reservieren Sie GC.Collect() ausschließlich für das Debugging.
Warnung: Rufen Sie GC.Collect() nicht in Produktionscode auf; verwenden Sie es nur während des Debuggens.

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.

Weiterlesen

Bereit anzufangen?

Nuget Downloads 22,024,882Version:2026.11gerade veröffentlicht