Einzelnen Beitrag anzeigen

Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#9

Re: Wieviel Speicher kann ich nutzen?

  Alt 4. Mär 2006, 10:54
wenn du mit obigem Code Memory allozieren möchtest, müsste ja im virtuellen Adressraum die gesamte Grösse zusammenhängend frei sein... da jedoch teilweise stark verzettelt kleine Bereiche bereits belegt sind, ist es glücksache, wie gross der grösste zusammenhängende freie Speicherblock noch ist...

schau dir mal mittels folgendem Code den virtuellen Adressraum deines Prozesses an:
Delphi-Quellcode:
Procedure VMdump();
Var
  Base : Pointer;
  MBI : TMemoryBasicInformation;
  State : String;
  TypeS : String;
begin
  Base:=Nil;
  While (VirtualQuery(Base,MBI,SizeOf(MBI)) > 0) Do Begin
    Case MBI.State Of
      MEM_COMMIT : State:='Commit';
      MEM_FREE : State:='Free';
      MEM_RESERVE : State:='Reserve';
      Else State:='-';
    end;
    Case MBI.Type_9 Of
      MEM_IMAGE : TypeS:='Image';
      MEM_MAPPED : TypeS:='Mapped';
      MEM_PRIVATE : TypeS:='Private';
      Else TypeS:='-';
    end;

    WriteLn(Format('%p..%.8x %.7d %-7s %-7s',[MBI.BaseAddress,LongWord(MBI.BaseAddress) + MBI.RegionSize - 1,MBI.RegionSize div 1024,State,TypeS]));

    Base:=Pointer(LongWord(MBI.BaseAddress) + MBI.RegionSize);
  end;
end;
bei mir war der grösste "Free"-Block ca. 1.2 GB...

wenn du nun in einer Schlaufe kleinere Blöcke allozieren würdest, wären sicherlich gegen 2 GB möglich...
  Mit Zitat antworten Zitat