Access-Speicher überwachen mit VMMap

Trotz eigentlich ausreichenden Arbeitsspeichers und sonstiger Systemressourcen kann es vorkommen, dass Access in die Knie geht. Das macht sich durch verschiedene Fehlermeldungen bemerkbar. Aber wo liegen eigentlich die Grenzen von Access in der 32-Bit- und der 64-Bit-Version und wie findet man heraus, wie viele Formulare oder Recordsets Access vertragen kann? Das schauen wir uns in diesem Beitrag einmal genauer an. Dabei nutzen wir ein Tool namens VMMap von Microsoft, mit dem wir uns den Speicherbedarf von Anwendungen wie Access genau ansehen können.

Werkzeug für diesen Beitrag: VMMap

VMMap ist ein hilfreiches Tool, um den virtuellen Adressraum und den Speicherverbrauch von Prozessen zu visualisieren und zu analysieren. Die verschiedenen Werte, die wir in VMMap sehen, repräsentieren verschiedene Arten von Speicherbereichen und -ressourcen im virtuellen Adressraum eines Prozesses.

VMMap herunterladen

VMMap laden wir direkt beim Microsoft herunter. Eine zum Zeitpunkt der Erstellung dieses Beitrags gültige Downloadadresse lautet:

https://learn.microsoft.com/de-de/sysinternals/downloads/vmmap

Dies lädt das Programm vmmap.exe herunter.

VMMap starten

Starten wir die Datei vmmap.exe, erscheint der Dialog aus Bild 1. Hier wählen wir den Prozess aus, den wir hinsichtlich des Speicherbedarfs untersuchen wollen. In diesem Fall wählen wir den Eintrag MSACCESS.EXE aus.

Übersicht der Prozesse

Bild 1: Übersicht der Prozesse

Direkt im Anschluss wird es in dem nun geöffneten Fenster für diesen Prozess sehr bunt (siehe Bild 2). Hier sehen wir im oberen Bereich drei Balken, die folgende Bedeutung haben:

Daten eines Prozesses

Bild 2: Daten eines Prozesses

  • Committed: Der “Committed” (zugesagte) Speicher bezieht sich auf den Teil des virtuellen Adressraums eines Prozesses, der tatsächlich für die Verwendung im physischen Speicher oder in der Auslagerungsdatei reserviert ist. Es stellt den Speicher dar, den der Prozess für seine Operationen nutzen kann. Ein zugesagter Speicher muss nicht sofort im physischen RAM vorhanden sein, sondern kann bei Bedarf in die Auslagerungsdatei verschoben werden.
  • Private Bytes: “Private Bytes” sind der Teil des “Committed” Speichers, der nicht von anderen Prozessen oder Anwendungen geteilt wird. Dies ist der Speicher, der ausschließlich für den aktuellen Prozess reserviert ist. Private Bytes repräsentieren den Verbrauch von tatsächlichem physischem RAM und Auslagerungsdatei-Speicher durch den Prozess.
  • Working Set: Das “Working Set” ist der tatsächliche physische Speicher (RAM), der derzeit von einem Prozess im Arbeitsspeicher gehalten wird. Es umfasst diejenigen Seiten im virtuellen Adressraum des Prozesses, die aktiv verwendet werden. Der Working Set-Wert ändert sich ständig, wenn der Prozess Daten liest und schreibt.

Die Balken stellen die darunter abgebildeten Informationen in einer anderen Ansicht dar.

Hier ist eine Erklärung für die darunter liegenden Zeilen:

  • Image: Dieser Bereich enthält den ausführbaren Code und die Daten des Prozesses. Es umfasst das Programm selbst sowie die DLLs und anderen Dateien, die vom Prozess verwendet werden.
  • Heap: Ein Heap ist ein Speicherbereich, in dem dynamisch zugewiesene Speicherblöcke für Datenstrukturen wie Arrays und Listen verwaltet werden. Dieser Bereich wächst und schrumpft je nach Bedarf.
  • Page Table: Die Seitenverwaltungstabelle ist eine interne Struktur, die das Betriebssystem verwendet, um den physischen Speicher mit den virtuellen Adressen zu verknüpfen. Dieser Bereich zeigt Informationen über die Seitenzuordnung.
  • Private Data: Private Daten sind Bereiche im virtuellen Adressraum, die von diesem Prozess für seine eigenen Zwecke reserviert wurden. Sie sind für andere Prozesse nicht zugänglich.
  • Shareable: “Shareable”-Bereiche sind solche, die zwischen verschiedenen Prozessen gemeinsam genutzt werden können, zum Beispiel durch Speicherzuweisungen über gemeinsam genutzte Bibliotheken oder Ressourcen.
  • Mapped File: Dieser Bereich repräsentiert Dateien, die in den Speicher des Prozesses abgebildet (geladen) wurden. Diese Dateien können von anderen Prozessen oder dem Betriebssystem geändert werden.
  • Stack: Der “Stack” ist ein Bereich des Speichers, der für die Verwaltung von Funktionen und Variablen in einem Programm verwendet wird. Er wächst normalerweise von oben nach unten und enthält Informationen über Aufrufer und Parameter von Funktionen.
  • Managed Heap: Dieser Bereich ist spezifisch für verwalteten Code, normalerweise im Kontext von .NET-Programmierung. Er enthält Objekte, die vom .NET-Heap verwaltet werden.
  • Unusable: “Unusable”-Bereiche sind Speicherbereiche, die nicht verwendet oder zugewiesen werden können. Dies kann beispielsweise aufgrund von Sicherheitsmaßnahmen oder Betriebssystemeinschränkungen der Fall sein.
  • Free: Dies sind Bereiche, die im virtuellen Adressraum als nicht zugewiesener oder freier Speicherplatz markiert sind und derzeit nicht verwendet werden.

Der Bereich darunter schlüsselt die verschiedenen Bereiche sehr detailliert auf – diesen Bereich wollen wir uns nicht genauer ansehen. Interessant sind die Werte Size in der Zeile Total und Free.

Speicherbedarf mit und ohne aktiviertem LAA-Modus

Da das Thema Access in der 32-Bit-Version und der 64-Bit-Version und LAA-Moduls nach wie vor aktuell ist, schauen wir uns als Erstes einmal den Speicherbedarf einer neuen, leeren Datenbank an.

Bei nicht aktiviertem LAA-Modus erhalten wir das Ergebnis aus Bild 3. Bei rund 0,9 Gigabyte Speicherbedarf ohne geöffnete Objekte verbleiben ca. 1,2 Gigabyte virtueller Speicher für Objekte.

Speicherbedarf von Access ohne aktivierten LAA-Modus

Du hast das Ende des frei verfügbaren Textes erreicht. Möchtest Du ...

Oder bist Du bereits Abonnent und hast Zugangsdaten? Dann logge Dich gleich hier ein:
Die Zugangsdaten findest Du im aktuellen gedruckten Heft oder in der E-Mail, die Du als Abonnent mit jeder neuen Ausgabe erhältst.

Schreibe einen Kommentar