AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Speicherstatus Abfrage - Frage

Ein Thema von Gehstock · begonnen am 22. Feb 2007 · letzter Beitrag vom 23. Feb 2007
Antwort Antwort
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#1

Speicherstatus Abfrage - Frage

  Alt 22. Feb 2007, 15:45
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
Marcel
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#2

Re: Speicherstatus Abfrage - Frage

  Alt 23. Feb 2007, 08:20
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
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Speicherstatus Abfrage - Frage

  Alt 23. Feb 2007, 08:28
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!!
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Speicherstatus Abfrage - Frage

  Alt 23. Feb 2007, 10:19
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
Miniaturansicht angehängter Grafiken
unbenannt_990.jpg  
Marcel
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Speicherstatus Abfrage - Frage

  Alt 23. Feb 2007, 11:56
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.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:55 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