AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Betriebssysteme Nicht genügend Arbeitsspeicher Win XP vs Win 7
Thema durchsuchen
Ansicht
Themen-Optionen

Nicht genügend Arbeitsspeicher Win XP vs Win 7

Ein Thema von ibp · begonnen am 6. Sep 2010 · letzter Beitrag vom 7. Sep 2010
Antwort Antwort
kschit

Registriert seit: 29. Okt 2007
14 Beiträge
 
#1

AW: Nicht genügend Arbeitsspeicher Win XP vs Win 7

  Alt 7. Sep 2010, 05:59
Gibt's schon was neues? Habe ähnliche Probleme. Allerdings hab ich einen Teil in eine DLL ausgelagert. Verwende bereits die FastMM neueste Version. Unter Windows XP kein Problem, unter Windows 7 schmiert das Teil ab. Könnte auch an dem blöden Quickreport liegen, dass der zusätzlich noch irgendwelche Speicherleaks hat, die unter Windows 7 zuschlagen. Auf jedenfall würde ich mich sehr freuen, wenn Du Dein Ergebnis hier nochmal posten könntest. Danke!
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Nicht genügend Arbeitsspeicher Win XP vs Win 7

  Alt 7. Sep 2010, 08:03
Hallo,

bei der BDE solltest du explizit Prepare/UnPrepare bei den Queries benutzen (es gab da mal nen Mem-Leak).
Ausserdem explizite Transaktionen (StartTransaction/Commit) benutzen,
und alle x Datensätze /(z.B. alle 1000) ein Commit machen.
Dass das dann nicht in einer Transaktion läuft, tja ...


Heiko

So 4000 ist erreicht
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#3

AW: Nicht genügend Arbeitsspeicher Win XP vs Win 7

  Alt 7. Sep 2010, 08:37
Wenn ihr dieses in euer Programm einbaut, was zeigt denn dieses jeweils im XP/7 an?
Delphi-Quellcode:
var GMS: TMemoryStatusEx;

GMS.dwLength := SizeOf(TMemoryStatusEx);
GlobalMemoryStatusEx(GMS);
Label1.Caltion := Format('%.2n MB verfügbar', [GMS.ullAvailVirtual / 1048576]);

@Luckie: Hab hier garde nur 2 GB im System verfügbar, also was zeigt denn Folgendes an?
Code:
program Project3;

{$APPTYPE CONSOLE}

uses
  Windows;

//{$SetPeFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}

var
  GMS: TMemoryStatusEx;

begin
  GMS.dwLength := SizeOf(TMemoryStatusEx);
  GlobalMemoryStatusEx(GMS);
  WriteLn('used (system):               ', GMS.dwMemoryLoad, ' %');
  WriteLn;
  WriteLn('physical memory - total:     ', GMS.ullTotalPhys     / 1048576 :4:2, ' MB');
  WriteLn(' (system)       - available: ', GMS.ullAvailPhys     / 1048576 :4:2, ' MB');
  WriteLn;
  WriteLn('page file       - total:     ', GMS.ullTotalPageFile / 1048576 :4:2, ' MB');
  WriteLn('                - available: ', GMS.ullAvailPageFile / 1048576 :4:2, ' MB');
  WriteLn;
  WriteLn('virtual memory  - total:     ', GMS.ullTotalVirtual  / 1048576 :4:2, ' MB');
  WriteLn(' (this program) - available: ', GMS.ullAvailVirtual  / 1048576 :4:2, ' MB');
  ReadLn;
end.
PS: Wer mehr als 4 GB in einem Win32-Programm nutzen will, der muß erstmal Large-Address-Aware im System aktiviert haben und sollte sich dann im MSDN mal wie AWE-Funktionen ansehn.

@Mods: Ja, ich hab absichtlich [CODE] verwendet, wehe ihr editiert das ... bitte repariert endlich mal das Delphi-Tag.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 7. Sep 2010 um 08:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Nicht genügend Arbeitsspeicher Win XP vs Win 7

  Alt 7. Sep 2010, 16:11
Unter 32-Bit hast du nur einen Adressraum von 4 GB. Davon belegt das Betriebssystem 2 GB. Mir einem Schalter kann man den Adressraum der Anwendung auf 3 GB erhöhen. Davon ist aber abzuraten, da selbst 2 GB für das Betriebssystem schon ziemlich knapp sind.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.233 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Nicht genügend Arbeitsspeicher Win XP vs Win 7

  Alt 7. Sep 2010, 19:35
Mir einem Schalter kann man den Adressraum der Anwendung auf 3 GB erhöhen.
Das wirkt aber auch nur bei Anwendungen die per PE-Flag 3GB Adressraum unterstützen.
Davon ist aber abzuraten, da selbst 2 GB für das Betriebssystem schon ziemlich knapp sind.
Das Problem sind eher Treiber die oft nicht damit zurecht kommen. Dieser kann dan Problemlos eine BSOD auslösen.

Für 64-Windows kann man Problemlos 32-Bit Apps mit dem 3GB-Flag laufen lassen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  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 14:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz