Einzelnen Beitrag anzeigen

Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#6

Re: stream, der nur im RAM bleibt?

  Alt 12. Sep 2004, 16:10
Zitat von quirks:
Bleibt der wirklich NUR im RAM oder wird der bei vollem RAM doch (zumindest teilweise) in die SWAP-Datei ausgelagert?
Da hast du mit TMemoryStream keinen Einfluss drauf. Hier kommt es drauf an, wie Windows konfiguriert ist.
Ein kleines Beispiel, mit einem 100 MB großen TMemoryStream. Da kannst du dann sofort sehen, wieviel ausgelagert wird.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  MEMINFOTEXT = 'Auslagerungsdatei ist ca. %d MB groß.';
var
  MemStat: TMemoryStatus;
  PageFileSize: Integer;
  MemStream: TMemoryStream;
begin

  // Größe der Auslagerungsdatei berechnen

  MemStat.dwLength := SizeOf(TMemoryStatus);
  GlobalMemoryStatus(MemStat);
  PageFileSize := (MemStat.dwTotalPageFile - MemStat.dwAvailPageFile) div 1024 div 1024;
  ShowMessage(Format(MEMINFOTEXT, [PageFileSize]));



  // MemoryStream erstellen (100 MB)

  MemStream := TMemoryStream.Create;
  MemStream.Size := 104857600;



  // Größe der Auslagerungsdatei neu berechnen

  MemStat.dwLength := SizeOf(TMemoryStatus);
  GlobalMemoryStatus(MemStat);
  PageFileSize := (MemStat.dwTotalPageFile - MemStat.dwAvailPageFile) div 1024 div 1024;
  ShowMessage(Format(MEMINFOTEXT, [PageFileSize]));



  // MemoryStream wieder freigeben

  MemStream.Free;



  // Größe der Auslagerungsdatei neu berechnen

  MemStat.dwLength := SizeOf(TMemoryStatus);
  GlobalMemoryStatus(MemStat);
  PageFileSize := (MemStat.dwTotalPageFile - MemStat.dwAvailPageFile) div 1024 div 1024;
  ShowMessage(Format(MEMINFOTEXT, [PageFileSize]));

end;
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat