![]() |
Speicherstatus Abfrage - Frage
Delphi-Quellcode:
was lese ich mit den einzelnen commands eigendlich aus bin mir da n bissel unsicher bei
l := listview1.Items.Add;
l.Caption := 'Hauptspeicher'; l.SubItems.Add(FormatFloat('#,###" MB"', MS.dwTotalPhys / 1048576)); l := listview1.Items.Add; l.Caption := 'Verwendet'; l.SubItems.Add(Format('%d %%', [MS.dwMemoryLoad])); l := listview1.Items.Add; l.Caption := 'Frei'; l.SubItems.Add(FormatFloat('#,###" MB"', (MS.dwAvailPhys/ 1048576))); l := listview1.Items.Add; l.Caption := 'Größe Auslagerungsdatei'; l.SubItems.Add(FormatFloat('#,###" MB"', (MS.dwTotalVirtual/ 1048576))); l := listview1.Items.Add; l.Caption := 'Frei Auslagerungsdatei'; l.SubItems.Add(FormatFloat('#,###" MB"', (MS.dwAvailVirtual/ 1048576))); l := listview1.Items.Add; l.Caption := 'Größe Gesamtspeicher'; l.SubItems.Add(FormatFloat('#,###" MB"', (MS.dwTotalPageFile/ 1048576))); l := listview1.Items.Add; l.Caption := 'Frei Gesamtspeicher'; l.SubItems.Add(FormatFloat('#,###" MB"', (MS.dwAvailPageFile/ 1048576))); l := listview1.Items.Add; l.Caption := 'dwload'; l.SubItems.Add(FormatFloat('#,###" ms"', (MS.dwLength))); MS.dwLength MS.dwTotalPageFile MS.dwAvailPageFile |
Re: Speicherstatus Abfrage - Frage
MS.dwLength gibt dir die Größe der MemoryStatus-Datensruktur in Byte zurück, was aber für die Ausgabe nicht wichtig ist. Denn das sind die anderen wie:
MS.dwTotalPageFile: größt mögliche Größe der Auslagrungsdatei MS.dwAwailPageFile: freie Platz in der Auslagerungsdatei Ist also in deinem Code falsch beschrieben. Ich hoffe ich konnte helfen. Gruß Mazel |
Re: Speicherstatus Abfrage - Frage
Zitat:
Zitat:
|
Re: Speicherstatus Abfrage - Frage
Liste der Anhänge anzeigen (Anzahl: 1)
MS.dwAvailVirtual dachte das ist die verfügbare und das MS.dwTotalVirtual die maximale auslagerungsdatei
die bei mir 2046 mb groß ist was laut bild für MS.dwTolatVirtual sprechen würde |
Re: Speicherstatus Abfrage - Frage
Das ist dein virtueller Adressraum.
Unabhängig was physisch vorhanden ist (ob du nur 256MB RAM hast + 0MB Auslagerungsdatei oder 1,5GB RAM 1 GB Auslagerungsdatei) kannst du therotisch (also virtuell) auf 4 GB lineraen Adressraum zugreifen. Dies gitl für eine 32 bit CPU, da du mit einem Pointer 4GB Speicher also 2^32 Speicherzellen (à 1 Byte) adressieren kannst. Wo deine Daten und dein Programmcode dann wirklich landet (im RAM oder in der Auslagerungsdatei) regelt die MMU (Memory Management Unit). Für dich sieht der (virtuelle) Speicher immer gleich aus. du hast immer die gleichen Adressen, egal wie oft du deinen Prozess parallel laufen lässt. So, und warum stehen bei Totalvirtual nur 2GB? Das liegt daran, dass dir Windows von den 4GB gleich mal so 2GB wieder wegnimmt und da z.B. die Windows-API hineinmapped. Dadurch sieht jeder Prozess an der gleichen Adresse die gleichen WIN-API-funktionen. Das ist alles. Availvirtual ist entsprechend etwas kleiner, da du ja dein Programm schon geladen hast. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz