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
Seite 1 von 2  1 2      
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#1

Nicht genügend Arbeitsspeicher Win XP vs Win 7

  Alt 6. Sep 2010, 17:15
Hi,

uns fehlt eine Idee zu einem Problem, vielleicht hat ja jemand einen Wink.

Problem: Die Applikation läuft auf einem Win XP Rechner mit 768 MB und einem Win 7 mit 4 GB. Das Programm arbeitet mit der BDE und Interbase zusammen, jeweils auf beiden Rechnern mit den gleichen Versionen und Konstellationen.
Man kann mittels einer Export - Import Datei Daten auf andere Datenbanken portieren. So weit so gut, hat bisher immer super geklappt.
Nun aber das: Wenn ich die eine große Exportdatei mit dem XP-Rechner importiere, dann klappt alles. Wenn ich das mit dem Win 7 Rechner mache, dann steigt er nach einiger Zeit aus mit der Meldung "zu wenig Arbeitsspeicher". Ja der Vergleich hinkt aber der Win 7 Rechner hat ca. das 5-Fache an Speicher wie der alte XP-Rechner.

Wo kann ich da ansetzen?

Danke schon mal...
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#2

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

  Alt 6. Sep 2010, 17:31
Ist die BDE ablösen eine Alternative für dich?
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 6. Sep 2010, 17:34
Es kann sein, daß im Win7 mehr/größere DLLs und Daten im Speicher der Anwendung (oder Datenbank) eingebunden werden und daß daher nun der virtuelle Speicher, welcher vorher im XP grade noch so ausreichte, im Win7 nun zu voll ist.
Du könntest mal sehn, wenn du bei deinem Programm die 3GB-Option aktivierst.

Eventuell mal schauen wie voll der virtuelle Speicher jeweils ist.
$2B or not $2B
  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 6. Sep 2010, 17:44
Das ist Unsinn. Unter 32-Bit stehen jedem Programm 4GB Adressraum zur Verfügung, wobei die Hälfte vom Betriebssystem belegt wird. Es ist daher unerheblich, wie groß der tatsächliche physikalische Speicher ist, da wir hier von virtuellen Speicher reden. Eine Rolle aber spielt die Größe der Auslagerungsdatei. Es kann sein, dass diese zu klein ist und Windows keinen virtuellen Speicher mehr zur Verfügung stellen kann. Wenn man daran aber nichts geändert hat, sollte es da auch keine Probleme geben. Ich kann mir nur vorstellen, dass Windows 7 empfindlicher auf Speicherlecks reagiert. Der Arbeitsspeicher also zum Beispiel zu stark fragmentiert ist und Windows keinen benötigten zusammenhängenden Speicher mehr zur Verfügung stellen kann. Deswegen wie forderst du Speicher an und gibst du ihn auch immer wieder frei?


Wie das mit dem Speicher unter 64-Bit aussieht kann ich allerdings nicht sagen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#5

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

  Alt 6. Sep 2010, 18:21
Ist die BDE ablösen eine Alternative für dich?
BDE wird abgelöst werden, spielt aber denke ich hier keine Rolle und ich will keine "wie kann man nur noch mit der BDE arbeiten"-Diskussion.

Eine Rolle aber spielt die Größe der Auslagerungsdatei. Es kann sein, dass diese zu klein ist und Windows keinen virtuellen Speicher mehr zur Verfügung stellen kann. Wenn man daran aber nichts geändert hat, sollte es da auch keine Probleme geben.
Das werde ich mal abfragen...

Ich kann mir nur vorstellen, dass Windows 7 empfindlicher auf Speicherlecks reagiert. Der Arbeitsspeicher also zum Beispiel zu stark fragmentiert ist und Windows keinen benötigten zusammenhängenden Speicher mehr zur Verfügung stellen kann. Deswegen wie forderst du Speicher an und gibst du ihn auch immer wieder frei?
Das könnte ein Hinweis sein, da in dieser Programmversion (uralt!) in dieser Funktion einige Lecks vorhanden waren

Wie das mit dem Speicher unter 64-Bit aussieht kann ich allerdings nicht sagen.
..hier bisher nicht relevant.

Danke schon mal...
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#6

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

  Alt 6. Sep 2010, 18:51
Verwende mal FastMM in deinem Programm. Ich könnte mir vorstellen das hier auch die Framentierung des alten Speichermanagers zuschlägt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
kschit

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

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

  Alt 7. Sep 2010, 06: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.276 Beiträge
 
Delphi 10.4 Sydney
 
#8

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

  Alt 7. Sep 2010, 09: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.184 Beiträge
 
Delphi 12 Athens
 
#9

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

  Alt 7. Sep 2010, 09: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.
$2B or not $2B

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

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

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

  Alt 7. Sep 2010, 17: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
Antwort Antwort
Seite 1 von 2  1 2      


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 08:24 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