Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Speicherstatus Abfrage - Frage (https://www.delphipraxis.net/87047-speicherstatus-abfrage-frage.html)

Gehstock 22. Feb 2007 14:45


Speicherstatus Abfrage - Frage
 
Delphi-Quellcode:
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)));
was lese ich mit den einzelnen commands eigendlich aus bin mir da n bissel unsicher bei
MS.dwLength
MS.dwTotalPageFile
MS.dwAvailPageFile

Mazel 23. Feb 2007 07:20

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

sirius 23. Feb 2007 07:28

Re: Speicherstatus Abfrage - Frage
 
Zitat:

Zitat von Mazel
MS.dwLength gibt dir die Größe der MemoryStatus-Datensruktur in Byte zurück, was aber für die Ausgabe nicht wichtig ist.

Zitat:

dwLength
Indicates the size of the structure. The calling process should set this member prior to calling GlobalMemoryStatus.
Für die Ausgabe nicht wichtig, aber vorher!!

Gehstock 23. Feb 2007 09:19

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

sirius 23. Feb 2007 10:56

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 15:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz