{"id":55001457,"date":"2023-10-01T00:00:00","date_gmt":"2023-10-08T12:41:25","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1457"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"AccessSpeicher_ueberwachen_mit_VMMap","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/AccessSpeicher_ueberwachen_mit_VMMap\/","title":{"rendered":"Access-Speicher &uuml;berwachen mit VMMap"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg02.met.vgwort.de\/na\/331a2593d5f84931b53a39922774461e\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>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&ouml;nnen. <\/b><\/p>\n<h2>Werkzeug f&uuml;r diesen Beitrag: VMMap<\/h2>\n<p>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&auml;sentieren verschiedene Arten von Speicherbereichen und -ressourcen im virtuellen Adressraum eines Prozesses.<\/p>\n<h2>VMMap herunterladen<\/h2>\n<p>VMMap laden wir direkt beim Microsoft herunter. Eine zum Zeitpunkt der Erstellung dieses Beitrags g&uuml;ltige Downloadadresse lautet:<\/p>\n<pre>https:\/\/learn.microsoft.com\/de-de\/sysinternals\/downloads\/vmmap<\/pre>\n<p>Dies l&auml;dt das Programm <b>vmmap.exe <\/b>herunter. <\/p>\n<h2><b>VMMap starten<\/b><\/h2>\n<p>Starten wir die Datei <b>vmmap.exe<\/b>, erscheint der Dialog aus Bild 1. Hier w&auml;hlen wir den Prozess aus, den wir hinsichtlich des Speicherbedarfs untersuchen wollen. In diesem Fall w&auml;hlen wir den Eintrag <b>MSACCESS.EXE <\/b>aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_05\/pic_1457_001.png\" alt=\"&Uuml;bersicht der Prozesse\" width=\"499,5589\" height=\"523,748\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: &Uuml;bersicht der Prozesse<\/span><\/b><\/p>\n<p>Direkt im Anschluss wird es in dem nun ge&ouml;ffneten Fenster f&uuml;r diesen Prozess sehr bunt (siehe Bild 2). Hier sehen wir im oberen Bereich drei Balken, die folgende Bedeutung haben:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_05\/pic_1457_002.png\" alt=\"Daten eines Prozesses\" width=\"700\" height=\"455,6248\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Daten eines Prozesses<\/span><\/b><\/p>\n<ul>\n<li><b>Committed<\/b>: Der &#8222;Committed&#8220; (zugesagte) Speicher bezieht sich auf den Teil des virtuellen Adressraums eines Prozesses, der tats&auml;chlich f&uuml;r die Verwendung im physischen Speicher oder in der Auslagerungsdatei reserviert ist. Es stellt den Speicher dar, den der Prozess f&uuml;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.<\/li>\n<li><b>Private Bytes<\/b>: &#8222;Private Bytes&#8220; sind der Teil des &#8222;Committed&#8220; Speichers, der nicht von anderen Prozessen oder Anwendungen geteilt wird. Dies ist der Speicher, der ausschlie&szlig;lich f&uuml;r den aktuellen Prozess reserviert ist. Private Bytes repr&auml;sentieren den Verbrauch von tats&auml;chlichem physischem RAM und Auslagerungsdatei-Speicher durch den Prozess.<\/li>\n<li><b>Working Set<\/b>: Das &#8222;Working Set&#8220; ist der tats&auml;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 <b>Working Set<\/b>-Wert &auml;ndert sich st&auml;ndig, wenn der Prozess Daten liest und schreibt.<\/li>\n<\/ul>\n<p>Die Balken stellen die darunter abgebildeten Informationen in einer anderen Ansicht dar.<\/p>\n<p>Hier ist eine Erkl&auml;rung f&uuml;r die darunter liegenden Zeilen:<\/p>\n<ul>\n<li><b>Image<\/b>: Dieser Bereich enth&auml;lt den ausf&uuml;hrbaren Code und die Daten des Prozesses. Es umfasst das Programm selbst sowie die DLLs und anderen Dateien, die vom Prozess verwendet werden.<\/li>\n<li><b>Heap<\/b>: Ein Heap ist ein Speicherbereich, in dem dynamisch zugewiesene Speicherbl&ouml;cke f&uuml;r Datenstrukturen wie Arrays und Listen verwaltet werden. Dieser Bereich w&auml;chst und schrumpft je nach Bedarf.<\/li>\n<li><b>Page Table<\/b>: Die Seitenverwaltungstabelle ist eine interne Struktur, die das Betriebssystem verwendet, um den physischen Speicher mit den virtuellen Adressen zu verkn&uuml;pfen. Dieser Bereich zeigt Informationen &uuml;ber die Seitenzuordnung.<\/li>\n<li><b>Private Data<\/b>: Private Daten sind Bereiche im virtuellen Adressraum, die von diesem Prozess f&uuml;r seine eigenen Zwecke reserviert wurden. Sie sind f&uuml;r andere Prozesse nicht zug&auml;nglich.<\/li>\n<li><b>Shareable<\/b>: &#8222;Shareable&#8220;-Bereiche sind solche, die zwischen verschiedenen Prozessen gemeinsam genutzt werden k&ouml;nnen, zum Beispiel durch Speicherzuweisungen &uuml;ber gemeinsam genutzte Bibliotheken oder Ressourcen.<\/li>\n<li><b>Mapped File<\/b>: Dieser Bereich repr&auml;sentiert Dateien, die in den Speicher des Prozesses abgebildet (geladen) wurden. Diese Dateien k&ouml;nnen von anderen Prozessen oder dem Betriebssystem ge&auml;ndert werden.<\/li>\n<li><b>Stack<\/b>: Der &#8222;Stack&#8220; ist ein Bereich des Speichers, der f&uuml;r die Verwaltung von Funktionen und Variablen in einem Programm verwendet wird. Er w&auml;chst normalerweise von oben nach unten und enth&auml;lt Informationen &uuml;ber Aufrufer und Parameter von Funktionen.<\/li>\n<li><b>Managed Heap<\/b>: Dieser Bereich ist spezifisch f&uuml;r verwalteten Code, normalerweise im Kontext von .NET-Programmierung. Er enth&auml;lt Objekte, die vom .NET-Heap verwaltet werden.<\/li>\n<li><b>Unusable<\/b>: &#8222;Unusable&#8220;-Bereiche sind Speicherbereiche, die nicht verwendet oder zugewiesen werden k&ouml;nnen. Dies kann beispielsweise aufgrund von Sicherheitsma&szlig;nahmen oder Betriebssystemeinschr&auml;nkungen der Fall sein.<\/li>\n<li><b>Free<\/b>: Dies sind Bereiche, die im virtuellen Adressraum als nicht zugewiesener oder freier Speicherplatz markiert sind und derzeit nicht verwendet werden.<\/li>\n<\/ul>\n<p>Der Bereich darunter schl&uuml;sselt die verschiedenen Bereiche sehr detailliert auf &#8211; diesen Bereich wollen wir uns nicht genauer ansehen. Interessant sind die Werte <b>Size <\/b>in der Zeile <b>Total <\/b>und <b>Free<\/b>.<\/p>\n<h2>Speicherbedarf mit und ohne aktiviertem LAA-Modus<\/h2>\n<p>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.<\/p>\n<p>Bei nicht aktiviertem LAA-Modus erhalten wir das Ergebnis aus Bild 3. Bei rund 0,9 Gigabyte Speicherbedarf ohne ge&ouml;ffnete Objekte verbleiben ca. 1,2 Gigabyte virtueller Speicher f&uuml;r Objekte.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_05\/pic_1457_003.png\" alt=\"Speicherbedarf von Access ohne aktivierten LAA-Modus\" width=\"424,5589\" height=\"424,5589\" \/><\/p>\n<p>[<\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Speicherbedarf von Access ohne aktivierten LAA-Modus<\/span><\/b><\/p>\n<p>Bei aktiviertem LAA-Modus verbraucht Access an sich ungef&auml;hr genauso viel Speicher wie ohne LAA-Modus. Allerdings ist der verf&uuml;gbare Speicher mit &uuml;ber 3,3 Gigabyte fast drei Mal so gro&szlig; (siehe Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_05\/pic_1457_004.png\" alt=\"Speicherbedarf von Access mit aktiviertem LAA-Modus\" width=\"424,5589\" height=\"424,5589\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Speicherbedarf von Access mit aktiviertem LAA-Modus<\/span><\/b><\/p>\n<p>Den LAA-Modus haben wir mit dem Tool eingeschaltet, das wir im Beitrag <b>Schneller, weiter, h&ouml;her mit LAA f&uuml;r Access 32-Bit <\/b>(<b>www.access-im-unternehmen.de\/1458<\/b>) vorstellen.<\/p>\n<h2>Speicherbedarf im laufenden Betrieb pr&uuml;fen<\/h2>\n<p>Wir experimentieren zun&auml;chst ein wenig mit Access ohne aktivierten LAA-Modus. Dazu erstellen wir ein Formular zum Steuern der Tests namens <b>frmTests<\/b>. Dieses erh&auml;lt eine Schaltfl&auml;che namens <b>cmdFormularOeffnen <\/b>und ein Textfeld namens <b>txtAnzahlFormular <\/b>zur Anzeige der Anzahl der Formulare.<\/p>\n<p>Im Klassenmodul des Formulars hinterlegen wir den folgenden Code. Die Variable <b>col <\/b>soll die Verweise auf die Formulare speichern:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>col<span style=\"color:blue;\"> As <\/span>Collection<\/pre>\n<p>Diese f&uuml;llen wir mit den Verweisen auf die nachfolgend erstellten Formulare. Dazu initialisieren wir die Variable <b>col <\/b>beim Laden des Formulars:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     <span style=\"color:blue;\">Set<\/span> col = <span style=\"color:blue;\">New<\/span> Collection\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Klicken wir auf die Schaltfl&auml;che <b>cmdFormularOeffnen<\/b>, l&ouml;sen wir die folgende Prozedur aus. Diese initialisiert ein neues Objekt des Typs <b>Form_frmLeer<\/b>, also im Prinzip eine Instanz des Formulars, und referenziert diese mit der Variablen <b>frm<\/b>. Warum &ouml;ffnen wir das Formular nicht einfach mit <b>DoCmd.OpenForm<\/b>? Weil wir dann nur eine Instanz erstellen k&ouml;nnen.<\/p>\n<p>Nach dem Initialisieren blenden wir das Formular mit <b>frm.Visible = True <\/b>ein. Au&szlig;erdem f&uuml;gen wir die Objektvariable der Collection <b>col <\/b>hinzu, damit das Formular nach dem Beenden der Prozedur nicht zerst&ouml;rt wird.<\/p>\n<p>Wir tragen die Anzahl der aktuell ge&ouml;ffneten Formulare in das Textfeld ein und verschieben das neu ge&ouml;ffnete Formular ein wenig nach unten und nach rechts, damit wir erkennen k&ouml;nnen, dass ein neues Formular angelegt wurde.<\/p>\n<p>Schlie&szlig;lich verschieben wir noch den Fokus auf unser aufrufendes Formular, damit wir schnell hintereinander einige Formulare &ouml;ffnen k&ouml;nnen:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdFormularOeffnen_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>i<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>frm<span style=\"color:blue;\"> As <\/span>Form\r\n     <span style=\"color:blue;\">Set<\/span> frm = <span style=\"color:blue;\">New<\/span> Form_frmLeer\r\n     frm.Visible = <span style=\"color:blue;\">True<\/span>\r\n     col.Add frm\r\n     Me!txtAnzahlFormulare = Forms.Count\r\n     DoCmd.MoveSize Me!txtAnzahlFormulare * 30, _\r\n         Me!txtAnzahlFormulare * 20\r\n     Me.SetFocus\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Wenn wir einige Formulare ge&ouml;ffnet haben, erscheint schlie&szlig;lich die Fehlermeldung aus Bild 5. In unserem Fall k&ouml;nnen wir also gerade mal 64 v&ouml;llig leere Formulare &ouml;ffnen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_05\/pic_1457_005.png\" alt=\"Meldung nach einigen ge&ouml;ffneten Formularen\" width=\"699,559\" height=\"528,2545\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Meldung nach einigen ge&ouml;ffneten Formularen<\/span><\/b><\/p>\n<h2>Formulare mit Datenbindung<\/h2>\n<p>Schauen wir uns an, wie viele Recordsets mit einer mittelgro&szlig;en Tabelle wir &ouml;ffnen k&ouml;nnen. Dazu f&uuml;gen wir dem Formular eine weitere Collection hinzu, die wir beim Laden ebenfalls initialisieren:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>colRecordsets<span style=\"color:blue;\"> As <\/span>Collection\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     <span style=\"color:blue;\">Set<\/span> col = <span style=\"color:blue;\">New<\/span> Collection\r\n     <span style=\"color:blue;\">Set<\/span> colRecordsets = <span style=\"color:blue;\">New<\/span> Collection\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Au&szlig;erdem f&uuml;gen wir ein weiteres Textfeld und eine weitere Schaltfl&auml;che analog zum vorherigen Beispiel hinzu.<\/p>\n<p>F&uuml;r die Schaltfl&auml;che hinterlegen wir die folgende Prozedur. Diese legt jeweils ein neues Recordset an und f&uuml;gt dieses der Collection <b>colRecordsets<\/b> hinzu:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdRecordsetOeffnen_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset( _\r\n         \"SELECT * FROM tblKontakte\", dbOpenDynaset)\r\n     colRecordsets.Add rst\r\n     Me!txtAnzahlRecordsets = colRecordsets.Count\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Damit k&ouml;nnen wir in unserer Konstellation 229 Recordsets &ouml;ffnen. Danach erscheint in diesem Fall die Fehlermeldung aus Bild 6.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_05\/pic_1457_006.png\" alt=\"Fehler beim Aufrufen zu vieler Recordsets\" width=\"499,5589\" height=\"393,6165\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Fehler beim Aufrufen zu vieler Recordsets<\/span><\/b><\/p>\n<p>&Auml;ndern wir das &Ouml;ffnen des Recordsets auf den Modus <b>dbOpenSnapshot<\/b>, k&ouml;nnen wir 231 Recordsets &ouml;ffnen.<\/p>\n<p>Bei <b>dbOpenTable <\/b>mit der Tabelle <b>tblKontakte <\/b>konnten wie beliebig viele Recordsets &ouml;ffnen.<\/p>\n<p>Anschlie&szlig;end haben wir eine Kopie der Tabelle unter dem Namen <b>tblKontakte2 <\/b>erstellt, die nun 200 statt nur 100 Datens&auml;tze enth&auml;lt. Ergebnis: Der Fehler tritt ebenfalls nach ungef&auml;hr 230 Recordsets auf.<\/p>\n<h2>Tabelle mit Memofeldern<\/h2>\n<p>Nun legen wir noch eine Tabelle namens <b>tblKontakteMemo <\/b>an, wo wir die f&uuml;nf Textfelder der Tabelle <b>tblKontakte <\/b>in solche des Typs <b>Langer Text <\/b>umwandeln. Das folgende Experiment zeigt: Wir k&ouml;nnen etwa genauso viele Datens&auml;tze &ouml;ffnen wie bei der Tabelle mit Textfeldern des Typs <b>Kurzer Text<\/b>. Dies legt nahe, dass Access den Speicher entsprechend des gr&ouml;&szlig;ten Felddatentyps reserviert.<\/p>\n<h2>Tabelle mit mehr Feldern<\/h2>\n<p>Wir haben die Tabelle <b>tblKontakteMehrFelder <\/b>erstellt, die elf statt sechs Felder enth&auml;lt. Auch hier k&ouml;nnen wir ca. 224 Recordsets &ouml;ffnen, was nur geringf&uuml;gig weniger sind als zuvor.<\/p>\n<p>Selbst wenn wir eine Tabelle mit 255 Feldern &ouml;ffnen, k&ouml;nnen wir eine &auml;hnliche Anzahl von Recordsets auf Basis dieser Tabelle &ouml;ffnen.<\/p>\n<p>Und auch wenn wir alle Felder dieser Tabelle mit Daten gef&uuml;llt haben, lie&szlig;en sich fast 220 Recordsets basierend auf diesen Daten &ouml;ffnen.<\/p>\n<h2>Gebundenes Formular<\/h2>\n<p>Nun schauen wir uns an, wie viele Exemplare eines Formulars wir &ouml;ffnen k&ouml;nnen, wenn es an unsere Beispieltabelle gebunden ist.<\/p>\n<p>Dazu erstellen wir ein neues Formular namens <b>frmKontakte <\/b>und binden dieses an die Tabelle <b>tblKontakte<\/b>. Au&szlig;erdem zeigen wir alle Felder des aktuellen Datensatzes im Formular an. Um dies zu testen, legen wir neue Steuerelemente namens <b>txtAnzahlGebundeneFormulare <\/b>und <b>cmdGebundenesFormularOeffnen <\/b>an.<\/p>\n<p>Die Prozedur zum &Ouml;ffnen eines neuen Formulars ist genauso aufgebaut wie das aus dem ersten Beispiel.<\/p>\n<p>Damit k&ouml;nnen wir nun ungef&auml;hr 46 Formulare &ouml;ffnen.<\/p>\n<p>Anschlie&szlig;end probieren wir es mit einem &auml;hnlichen Formular in der Datenblattansicht. Das hei&szlig;t, es zeigt einige Daten mehr beim &Ouml;ffnen an. Es werden jedoch genauso viele Formulare wie zuvor ge&ouml;ffnet. Dies &auml;ndert sich auch bei einem Endlosformular nicht.<\/p>\n<h2>Formular mit Unterformularen<\/h2>\n<p>Nun erstellen wir ein Formular, welches das zuvor verwendete Formular sechs Mal als Unterformular enth&auml;lt.<\/p>\n<p>Das Ergebnis ist nachvollziehbar: Wir k&ouml;nnen acht Formulare &ouml;ffnen, also etwa 1\/6 der einzelnen ge&ouml;ffneten Formulare.<\/p>\n<h2>Tracken mit VMMap<\/h2>\n<p>Nun wollen wir uns ansehen, wie sich die Ver&auml;nderungen auf die Anzeige des verbrauchten und des freien Speicherplatzes in VMMap auswirken.<\/p>\n<p>Am besten l&auml;sst sich dies beobachten, wenn wir VMMap und die zu untersuchende Access-Anwendung nebeneinander platzieren.<\/p>\n<p>Dann f&uuml;hren wir in Access die zu untersuchenden Aktionen aus &#8211; in diesem Fall w&uuml;rden wir das Formular mit den sechs Unterformularen &ouml;ffnen, da dies den meisten Speicher zu verbrauchen scheint. Wir schauen uns den Speicher in den Zeilen <b>Total <\/b>und <b>Free <\/b>an. Das erledigen wir immer vor dem &Ouml;ffnen des Formulars und danach. Vor dem &Ouml;ffnen des Formulars mit den sechs Unterformularen sehen wir, dass der verf&uuml;gbare Speicherplatz 921.664 Kilobyte betr&auml;gt (siehe Bild 7).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_05\/pic_1457_008.png\" alt=\"Vor dem &Ouml;ffnen des Formulars\" width=\"424,5589\" height=\"424,5589\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Vor dem &Ouml;ffnen des Formulars<\/span><\/b><\/p>\n<p>Wenn wir eine Instanz dieses Formulars &ouml;ffnen, verkleinert sich der verf&uuml;gbare Speicherplatz bereits um knapp 90 Megabyte (siehe Bild 8).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_05\/pic_1457_007.png\" alt=\"Nach dem &Ouml;ffnen des Formulars\" width=\"424,5589\" height=\"424,5589\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Nach dem &Ouml;ffnen des Formulars<\/span><\/b><\/p>\n<p>Um den Unterschied zu erfassen, m&uuml;ssen Sie entweder nach dem Anlegen eines neuen Formulars zum Fenster von VMMap wechseln und die Taste <b>F5 <\/b>bet&auml;tigen oder Sie f&uuml;gen einen Aufruf der folgenden Funktion in die Prozedur zum &Ouml;ffnen des Formulars ein &#8211; hier den Pfad zur <b>VMMap.exe <\/b>anpassen:<\/p>\n<pre><span style=\"color:blue;\">Sub <\/span>VMMap()\r\n     <span style=\"color:blue;\">Dim <\/span>strPath<span style=\"color:blue;\"> As String<\/span>\r\n     strPath = \"C:\\...\\VMMap.exe -p MSAccess.exe\"\r\n     <span style=\"color:blue;\">Call<\/span> Shell(strPath, vbNormalFocus)\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Der Parameter <b>-p <\/b>erwartet den Namen des anzuzeigenden Prozesses. Dies flackert allerdings recht wild, sodass wir das Aktualisieren mit F5 bevorzugen.<\/p>\n<p>Bereits wenn noch ca. 309 Kilobyte verf&uuml;gbarer Speicherplatz verbleiben, meldet Access bei Versuch, eine weitere Instanz des Formulars zu &ouml;ffnen, den bekannten Fehler 2004. Es scheint also eine gewisse Reserve vorzuhalten.<\/p>\n<h2>Formular mit Unterformularen mit aktiviertem LAA<\/h2>\n<p>Um zu zeigen, welchen Unterschied die Verwendung des LAA-Modus macht, haben wir diesen nun aktiviert und &ouml;ffnen so viele Instanzen des Formulars mit sechs Unterformularen, bis die Fehlermeldung erscheint.<\/p>\n<p>Diesmal k&ouml;nnen wir 24 Exemplare des Formulars &ouml;ffnen &#8211; statt acht bei deaktiviertem LAA-Modus. Es lohnt sich bei 32-Bit-Access also auf jeden Fall, diesen Modus zu aktivieren. Alles Weitere dazu erfahren Sie im Beitrag <b>Schneller, weiter, h&ouml;her mit LAA f&uuml;r Access 32-Bit <\/b>(<b>www.access-im-unternehmen.de\/1458<\/b>).<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>AccessSpeicherUeberwachenMitVMMap.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/761DE0A1-838F-406C-91F6-3091AC7601D1\/aiu_1457.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Trotz eigentlich ausreichenden Arbeitsspeichers und sonstiger Systemresourcen 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, wieviele 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&ouml;nnen. <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662023,66052023,44000041],"tags":[],"class_list":["post-55001457","post","type-post","status-publish","format-standard","hentry","category-662023","category-66052023","category-Performance"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Access-Speicher &uuml;berwachen mit VMMap - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/AccessSpeicher_ueberwachen_mit_VMMap\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Access-Speicher &uuml;berwachen mit VMMap\" \/>\n<meta property=\"og:description\" content=\"Trotz eigentlich ausreichenden Arbeitsspeichers und sonstiger Systemresourcen 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, wieviele 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&ouml;nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/AccessSpeicher_ueberwachen_mit_VMMap\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-08T12:41:25+00:00\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"11\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessSpeicher_ueberwachen_mit_VMMap\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessSpeicher_ueberwachen_mit_VMMap\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Access-Speicher &uuml;berwachen mit VMMap\",\"datePublished\":\"2023-10-08T12:41:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessSpeicher_ueberwachen_mit_VMMap\\\/\"},\"wordCount\":2111,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessSpeicher_ueberwachen_mit_VMMap\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/331a2593d5f84931b53a39922774461e\",\"articleSection\":[\"2023\",\"5\\\/2023\",\"Performance\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessSpeicher_ueberwachen_mit_VMMap\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessSpeicher_ueberwachen_mit_VMMap\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessSpeicher_ueberwachen_mit_VMMap\\\/\",\"name\":\"Access-Speicher &uuml;berwachen mit VMMap - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessSpeicher_ueberwachen_mit_VMMap\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessSpeicher_ueberwachen_mit_VMMap\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/331a2593d5f84931b53a39922774461e\",\"datePublished\":\"2023-10-08T12:41:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessSpeicher_ueberwachen_mit_VMMap\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessSpeicher_ueberwachen_mit_VMMap\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessSpeicher_ueberwachen_mit_VMMap\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/331a2593d5f84931b53a39922774461e\",\"contentUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/331a2593d5f84931b53a39922774461e\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessSpeicher_ueberwachen_mit_VMMap\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Access-Speicher &uuml;berwachen mit VMMap\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Access-Speicher &uuml;berwachen mit VMMap - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/AccessSpeicher_ueberwachen_mit_VMMap\/","og_locale":"de_DE","og_type":"article","og_title":"Access-Speicher &uuml;berwachen mit VMMap","og_description":"Trotz eigentlich ausreichenden Arbeitsspeichers und sonstiger Systemresourcen 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, wieviele 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&ouml;nnen.","og_url":"https:\/\/access-im-unternehmen.de\/AccessSpeicher_ueberwachen_mit_VMMap\/","og_site_name":"Access im Unternehmen","article_published_time":"2023-10-08T12:41:25+00:00","author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"11\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/AccessSpeicher_ueberwachen_mit_VMMap\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/AccessSpeicher_ueberwachen_mit_VMMap\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Access-Speicher &uuml;berwachen mit VMMap","datePublished":"2023-10-08T12:41:25+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/AccessSpeicher_ueberwachen_mit_VMMap\/"},"wordCount":2111,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/AccessSpeicher_ueberwachen_mit_VMMap\/#primaryimage"},"thumbnailUrl":"http:\/\/vg02.met.vgwort.de\/na\/331a2593d5f84931b53a39922774461e","articleSection":["2023","5\/2023","Performance"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/AccessSpeicher_ueberwachen_mit_VMMap\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/AccessSpeicher_ueberwachen_mit_VMMap\/","url":"https:\/\/access-im-unternehmen.de\/AccessSpeicher_ueberwachen_mit_VMMap\/","name":"Access-Speicher &uuml;berwachen mit VMMap - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/AccessSpeicher_ueberwachen_mit_VMMap\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/AccessSpeicher_ueberwachen_mit_VMMap\/#primaryimage"},"thumbnailUrl":"http:\/\/vg02.met.vgwort.de\/na\/331a2593d5f84931b53a39922774461e","datePublished":"2023-10-08T12:41:25+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/AccessSpeicher_ueberwachen_mit_VMMap\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/AccessSpeicher_ueberwachen_mit_VMMap\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/AccessSpeicher_ueberwachen_mit_VMMap\/#primaryimage","url":"http:\/\/vg02.met.vgwort.de\/na\/331a2593d5f84931b53a39922774461e","contentUrl":"http:\/\/vg02.met.vgwort.de\/na\/331a2593d5f84931b53a39922774461e"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/AccessSpeicher_ueberwachen_mit_VMMap\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Access-Speicher &uuml;berwachen mit VMMap"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001457","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55001457"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001457\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001457"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001457"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001457"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}