Autor Beitrag
Miriam
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Sa 04.10.03 12:05 
Frage: wie kann ich mit delphi feststellen, wieviel arbeitsspeciher gerade verwendet wird, wieviel generell zur verfügung steht, arbeitsspeicher freigeben?

LG, Miriam

Moderiert von user profile iconTino: Titel geändert.
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Sa 04.10.03 12:45 
so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button1Click(Sender: TObject);
var
  Memory: TMemoryStatus;
begin
  GlobalMemoryStatus(Memory);

  //Arbeitsspeicher
  Label1.Caption:=IntToStr(Memory.dwTotalPhys div 1024);
  //Freier Arbeitsspeicher
  Label2.Caption:=IntToStr(Memory.dwAvailPhys div 1024);
  //Größte Größe der Auslagerungsdatei
  Label3.Caption:=IntToStr(Memory.dwTotalPageFile div 1024);
  //Freier Platz der Auslagerungsdatei
  Label4.Caption:=IntToStr(Memory.dwAvailPageFile div 1024);
end;


wie freigeben geht weiß ich nicht.
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mo 06.10.03 10:20 
Hallo,

hier eine weitere Möglichkeit:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
Procedure TForm1.Button1Click(Sender: TObject);
Var
  MS: TMemoryStatus;
  Str: String;
Begin
  MS.dwLength := SizeOf (MS);
  GlobalMemoryStatus (MS);
  With MS Do
    Begin
      Str := 'Memory status:' + #13 + #13;
      Str := Str + 'Percent of memory in use: ' + IntToStr (dwMemoryLoad) + '%' + #13;
      Str := Str + 'Bytes of physical memory: ' + IntToStr (dwTotalPhys) + ' bytes' + #13;
      Str := Str + 'Free physical memory bytes: ' + IntToStr (dwAvailPhys) + ' bytes' + #13;
      Str := Str + 'Bytes of paging file: ' + IntToStr (dwTotalPageFile) + ' bytes' + #13;
      Str := Str + 'Free bytes of paging file: ' + IntToStr (dwAvailPageFile) + ' bytes' + #13;
      Str := Str + 'User bytes of address space: ' + IntToStr (dwTotalVirtual) + ' bytes' + #13;
      Str := Str + 'Free user bytes: ' + IntToStr (dwAvailVirtual) + ' bytes';
    End;

  MessageDlg (Str, mtInformation, [mbOK], 0);
End;

Gruß
Tino
Cruiser23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 191

WinXP
D7 Prof.
BeitragVerfasst: Mo 03.11.03 17:16 
Danke erstmalfür die Hilfe. Nur wie kann ich nun Speicher freigeben?
Müsste man doch mittels Delphi auch können. Hoffe auf nen brauchbaren Denkanstoß oder mehr... :lol:

_________________
Du steckst immer in der Sch****, das einzige, was sich ändert, ist die Tiefe!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 03.11.03 17:20 
Was für Speicher willst du denn freigeben? Ich halte es für keine gute Idee in das Speichermanagment von Windows eingreifen zu wollen.
Cruiser23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 191

WinXP
D7 Prof.
BeitragVerfasst: Mo 03.11.03 18:57 
Meine wenn mann zb mit einer x.vbs den momentan benuzten Arbeitsspeicher frei geben. Kann mich diesbezüglich erinnern, soetwas mal gehabt zu haben. So nach dem Motto "FreeMem" ...

_________________
Du steckst immer in der Sch****, das einzige, was sich ändert, ist die Tiefe!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 03.11.03 19:03 
Das Prinzip ist folgendes: Du belegst mit deiner Anwendung so viel Speicher, dass Windows gezwungen wird den Speicher von anderen Anwendunge in die Auslagerungsdatei zu übertragen, da nach gibts du deinen Speicher wieder frei und schwubs hast du mehr physischen Speicher. Aber was hast du davon? So bald ein anderes Programm wieder aktiv wird, muss Windows wieder die erforderlichen Seiten aus der Auslagerungsdatei zurückkopiere. IMHO hast du dadurch eigentlich nur Performance Einbußen, weil du Windows damit beschäftigst Speicherseiten hin und her zu schieben.
Cruiser23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 191

WinXP
D7 Prof.
BeitragVerfasst: Di 04.11.03 12:09 
Ich habe mal in ner Zeitschrift eine erklärung gefunden, mit der man "Arbeitsspeicher" freigeben kann. Mann sollte eine x.vbs Datei erstellen mit folgendem Inhalt
ausblenden Quelltext
1:
2:
FreeMem(128000000)
WScript.Echo "Es wurden 128MB Arbeitsspeicher freigegeben!"

Wie ereiche ich das mit Delphi

_________________
Du steckst immer in der Sch****, das einzige, was sich ändert, ist die Tiefe!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 04.11.03 12:27 
Genauso, wie ich es beschrieben haben. Aber wie gesagt, ich halte das für unsinnig.
Cruiser23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 191

WinXP
D7 Prof.
BeitragVerfasst: Di 04.11.03 12:47 
Wollte es in ein Prog einbauen das diesen Vorgang regelmäßig wiederholt. In der Zeitschrift stand, das Ausführen der Datei würde dafür gut sein, wenn mann zb was am saugen ist, neben bei brennt und auch noch ein Archiv zipt, das System wieder etwas schneller zu machen (stand da so!) also den ablauf wieder flüssiger zu machen! Wenn der Weg der falsche is, gibt es eine andere Möglichkeit das System flüssig zu halten, wenn die Auslastung stark ist?

Und ausserdem: Wie kann ich mir die Taktfrequenz einerAMD-CPU anzeigen lassen. Habe da etwas im DLH gefunden, da steht aber das würde nur für Intel funktionieren...

_________________
Du steckst immer in der Sch****, das einzige, was sich ändert, ist die Tiefe!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 04.11.03 12:56 
Cruiser23 hat folgendes geschrieben:
Wollte es in ein Prog einbauen das diesen Vorgang regelmäßig wiederholt. In der Zeitschrift stand, das Ausführen der Datei würde dafür gut sein, wenn mann zb was am saugen ist, neben bei brennt und auch noch ein Archiv zipt, das System wieder etwas schneller zu machen (stand da so!) also den ablauf wieder flüssiger zu machen! Wenn der Weg der falsche is, gibt es eine andere Möglichkeit das System flüssig zu halten, wenn die Auslastung stark ist?

Programme beenden, mehr Speicher kaufen, ...
Zitat:

Und ausserdem: Wie kann ich mir die Taktfrequenz einerAMD-CPU anzeigen lassen. Habe da etwas im DLH gefunden, da steht aber das würde nur für Intel funktionieren...

Und was hat das jetzt noch mit dem Speicher zu tun? Und was ist das DLH? Irgendwo fliegt hier bestimmt auch ASM Code rum mit dem an die Taktfrequenz bekommt.
Cruiser23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 191

WinXP
D7 Prof.
BeitragVerfasst: Di 04.11.03 13:00 
Meinte den EDH (=Easy Delphi Helper) der DLH ist was ganz anderes (Dirty Little Helper). Ist eine Cheat & Trainer Datenbank. Mit Der Taktfrequenz hat das folgendes zu zun: Bastle geradean einem kleinen System-Überwachungs-Tool. Wäre deshalb ganz praktisch, werde das Forum mal durchstöbern... Danke schon mal für die Antwort!

_________________
Du steckst immer in der Sch****, das einzige, was sich ändert, ist die Tiefe!