Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   "nicht genügend arbeitspeicher verfügbar" (https://www.delphipraxis.net/70531-nicht-genuegend-arbeitspeicher-verfuegbar.html)

easteregg 31. Mai 2006 14:50


"nicht genügend arbeitspeicher verfügbar"
 
heyho

ich hab nen kleines problem, und zwar habe ich in meinem system 2,5gb ram und zwei grafikkarten (eine gf 5700 mit 128mb und eine kleine matrox mit 4mb) drin und betreibe damit drei monitore.
wenn ich nun ne weile arbeite und sich viele fenster anstauen (was öfters der fall ist) kommt irgendwann immer eines folgender probleme:

- wenn ich ne anwedungstarten will, stürzt diese ab mit dem fehler "Nicht genügend arbeitsspeicher verfügbar"
- zb im IE kann ich keine links mehr benutzen -> es passiert einfach nichts.
- ab und zu spielt der ganze desktop verrückt und einige programme stürzen grundlos ab.

-> speicherfehler und grafikkartenfehler kann ich beides ausschliesen
und die probleme lassen sich IMMER damit beheben, indem ich einfach paar programme oder fenster zumache und es geht alles ganz normal.
dabei ist weder der virtuelle noch der physikalische RAM voll.

wie werd ich das los?
weil das nervt ;)

mkinzler 31. Mai 2006 14:53

Re: "nicht genügend arbeitspeicher verfügbar"
 
das hört sich jetzt komisch an, aber wie sieht es mit dem Temp-Ordner aus?

easteregg 31. Mai 2006 14:56

Re: "nicht genügend arbeitspeicher verfügbar"
 
da ist auch noch genug platz drauf... ich hab nich so richtig ne ahnung mit was das zusammenhängen könnte.

kann es sein, das da irgend nen programm zecken macht? zb meine alte trillian 1.0 oder die winbar?

RavenIV 31. Mai 2006 15:17

Re: "nicht genügend arbeitspeicher verfügbar"
 
Was hast du für Ein Windows am laufen?
Win9x kommt sicher nicht mit so viel RAM klar...

easteregg 31. Mai 2006 15:23

Re: "nicht genügend arbeitspeicher verfügbar"
 
winXP prof SP2 mit allen updates.

sECuRE 31. Mai 2006 15:28

Re: "nicht genügend arbeitspeicher verfügbar"
 
Hi,

ich habe das selbe Problem; in meiner Kiste stecken 2 GB RAM. Ich vermute mittlerweile stark, dass es an den GDI-Objekten liegt. Du kannst dir im Taskmanager die GDI-Objekte-Spalte aktivieren und schauen, wieviele belegt sind. Ich konnte leider keine klaren Angaben darüber finden, wieviele bei Windows XP das Maximum sind, Microsoft tendiert eher zu "Da gibt's kein Maximum", aber es ist klar nachvollziehbar, dass ich erst wieder neue Anwendungen starten kann, sobald ich Anwendungen schließe, die viele GDI-Objekte (> 1000) haben.

Kandidaten für viele GDI-Objekte sind bei mir iTunes (keine Ahnung warum...), der Explorer (ebenfalls keine Ahnung) und Opera (bei der Anzahl an Tabs nicht verwunderlich).

Wenn du eine Lösung findest, wäre ich sehr daran interessiert. Vielleicht spielt auch der Einsatz von vmware eine Rolle? (Läuft bei mir permanent mit 1-2 VMs im Hintergrund)
Ich spiele momentan mit dem Gedanken, zu Linux zu wechseln auf diesem Rechner (habe ansonsten nur Macs) und Windows nur noch in einer VM zu benutzen...

Edit: Übrigens, ich benutze zwei Monitore (1600x1200 auf dem einen, 1280x1024 auf dem anderen, das ganze auf einer ATI x700). Die Symptome äußern sich ähnlich wie bei dir: Menüs öffnen sich einfach nicht, Symbolleisten werden weggelassen und Anwendungen starten nicht, bis ich nicht eine andere schließe.

cu

easteregg 31. Mai 2006 15:34

Re: "nicht genügend arbeitspeicher verfügbar"
 
gut ich schaue mal, ich hab allerdings ne höhere auflösung. 1920x1440 + 1600x1200 + 1280x1024 - aber das is scheinbar nicht ausschlaggebend.

aber mit den GDI objecten -> bei mir sind hohe kanidaten opera (2000) und tatsache der explorer (1000) und anschliesend winbar mit 600 nd ca. 10 andere mit jeweils 100-400.

was genau hat es mit diesen GDI objecten auf sich?

sECuRE 31. Mai 2006 15:37

Re: "nicht genügend arbeitspeicher verfügbar"
 
Hi,

die GDI-Objekte werden zum Zeichnen von allen möglichen Controls benötigt, soweit ich informiert bin. Das heißt, dass zum Beispiel jeder Button ein GDI-Objekt darstellt. Microsoft scheint sich nun mit dem Limit verschätzt zu haben (ich sag nur "nobody will ever need more than 640 kb of RAM") oder die entsprechenden Anwendungen haben Memory Leaks. In der Opera-Community wurden schon oft "Fix the GDI-Objects"-Rufe laut, ich weiß nicht, ob und wann sich da endlich was tut, und wieso der Explorer auch so ein Speicherloch hat...?

cu

himitsu 31. Mai 2006 15:42

Re: "nicht genügend arbeitspeicher verfügbar"
 
Hast du mal gezählt, aus wievielen Objekten(Windows) so ein Explorer besteht? ... das sind tausende ... dann ist die rechte Seite ein Internet Explorer (die Dateiliste und dieses WebAnsichtTeil sind Webseiten, da kommt och noch mal was zusammen) ... das sammelt sich halt ... Windows heißt ja nicht umsonst Windows (alles kleine Fenster ^^)

easteregg 31. Mai 2006 15:46

Re: "nicht genügend arbeitspeicher verfügbar"
 
nuja, aber wieso verbrät zb die winbar (winbar.nl) soviele (655)...

und wo liegt eigentlich schätzungsweise die grenze? und gibts da irgendwie patches dafür?

sECuRE 31. Mai 2006 15:48

Re: "nicht genügend arbeitspeicher verfügbar"
 
Hi,

@himitsu: Klar, aber so ziemlich jede Website hat um einiges mehr und trotzdem ist das Ausmaß an GDI-Objekten in Opera nicht annährend so groß wie beim Explorer (verhältnismäßig).
Außerdem sollte ich mich als Anwender um so etwas gar nicht kümmern müssen. Ich will mit so vielen Programmen gleichzeitig arbeiten können, wie es mein Arbeitsspeicher/Pagefile zulässt und nicht irgendwelche künstlichen/designtechnischen Beschränkungen...

@easteregg: Ich denke, 100-500 sind normal für ein Programm mit umfangreicher GUI... Patches sind mir leider nicht bekannt, bin da aber wie gesagt sehr interessiert dran.

cu

easteregg 31. Mai 2006 15:53

Re: "nicht genügend arbeitspeicher verfügbar"
 
und die gesammtanzahl die maximal machbar ist?
das muss doch irgendwie möglich sein, das irgendwie zu erweitern oder sowas

himitsu 31. Mai 2006 16:23

Re: "nicht genügend arbeitspeicher verfügbar"
 
die Gesamtzahl?
Na ja, da ihr doch die Probleme damit habt und wenn es wirklich damit zusammenhängt, dann zählt doch mal nach ;)

wenn es sich bei maximal 65000 einpendelt ... wird's wohl noch ein 16-Bit-Überbleibsel handeln (ich glaub Timer kann man auch nur maximal 65xxx erstellen, da die TimerID anscheinend ein WORD ist)

Erweitern?
Klarr ... man müßte (wenn es sich z.B. um ein Word für die Speicherung handelt) nur ein LongWord/LongInt drauß machen.
Also alle Lese-/Speicherzugriffe im gesamten Windows ändern und die Speicherplätze ... irgendwo müßten ja die zusätzlichen Bytes hin und wenn man schon mal dabei ist muß man halt Windows umschreiben, denn man müßte ja auch alle Records ändern, wo die ID drin gespeichert ist und demnach auch alles was dahinter in den Records steht und das wo diese Records wieder drin sind und natürlich auch alles was auf diese Records wieder zugreift und .... und ... und ...

easteregg 31. Mai 2006 16:29

Re: "nicht genügend arbeitspeicher verfügbar"
 
äh ok, dann nix erweitern ;D

aber das liegt nie und nimmer bei 65335!
das wird deutlich drunter sein,

ich zähl einfach mal wenn ich den spaß das nächste mal habe!

sECuRE 31. Mai 2006 16:33

Re: "nicht genügend arbeitspeicher verfügbar"
 
Hi,

ich habe gehört, dass es bei 10.000 liegt. Weiß aber nicht, warum das so sein soll oder woher die Behauptung kommt.

cu

easteregg 31. Mai 2006 16:37

Re: "nicht genügend arbeitspeicher verfügbar"
 
also ich habs grad mal wieder provoziert (opera geht überraschenderweise noch)
und ich hab derzeit ca. 12354 dieser objekte... (+- 200)

ah das kommt ja an die 10000 ran... aber das is ja total bekloppt.
wieso haben die sowas verzapft? ich mein das ist die BDS alleine mit knapp 4000 und paar explorer und IE fenster offen und schon sind die 10.000 voll.

das is ja nichtmal richtig viel, so das ich sagen könnte ich bin nen extremuser - irgendwie versteh ich das grad nicht!

himitsu 31. Mai 2006 16:44

Re: "nicht genügend arbeitspeicher verfügbar"
 
(64 * 1024) / 4 = 16384

Windows hat den Speicher in 64-KB-Blöcke aufgeteilt, man muß also immer in 64-KB-Blöcken den Speicher reservieren.

Also bei einem statischns Array of Pointer für die zu verwaltenden Objekte wäre, wenn nur ein Speicherblock reserviert wird und sich nichts an der Reservierung ändern läßt, auf 16384 Objekte beschränkt ... 's wäre och ma 'ne Erklärung :roll:

sECuRE 31. Mai 2006 16:45

Re: "nicht genügend arbeitspeicher verfügbar"
 
Hi,

das stimmt, allerdings soll es laut Microsoft ein 64 KB-Heap-Limit für GDI-Objekte/sonstige Resourcen seit Windows XP nicht mehr geben...?

cu

easteregg 31. Mai 2006 16:54

Re: "nicht genügend arbeitspeicher verfügbar"
 
was ja aber schienbar nicht stimmt. und ich hatte das auch mal unter win2k3 gehabt. also haben die das scheinbar doch nicht abgeschafft

himitsu 31. Mai 2006 17:19

Re: "nicht genügend arbeitspeicher verfügbar"
 
na ja, zwischen sollen und sein ist ja immer 'ne große Lücke, :roll:
aber es ist nunmal etwas auffällig ... 64K - ein paar Bytes für was anders = die anscheinende Grenze.

Am Ende kann es auch ganz einfach nur eine falsche Konstante sein ...
sozusagen Begrenzeung behoben, aber die MaxGDIObjects-Konstante steht noch auf dem Wert.

M$ wird sich ja noch umgucken, wenn wenn irgendwann sehr viel mehr mit 64-Bit-Systemen arbeiten und die Teile noch voll aufrüsten ... in ein paar Jahren werden wir eh schon alleine 128 GB RAM für's BDS2096 benötigen :stupid:

Vjay 31. Mai 2006 17:46

Re: "nicht genügend arbeitspeicher verfügbar"
 
Könnte sich ja mal jmd. die Mühe machen und ein Programm schreiben, welches GDI-Objekte (DCs?) einzeln reserviert, bis es nicht mehr geht und dann kann man ja zusammenzählen ;)

faux 31. Mai 2006 17:58

Re: "nicht genügend arbeitspeicher verfügbar"
 
Hallo!

Ich kann das nur bestätigen, habe das Selbe problem und wollte schon mal nen Thread schreiben:
Ich habe auch 2 GB Speicher und auch 5 GB Virtual Memory auf der Systemplatte reserviert, jedoch kommt es oft vor, dass ich keine neuen Programme mehr öffnen kann, wenn ich ca 20 Applikationen geöffnet habe (Dienste und Hindergrundprozesse mal ausgeschlossen). Anders macht sich das ganze auch noch bemerkbar: Ich kann keine Menüs mehr öffnen.
Naja, nervt ziemlich, aber sobald ich ein Programm beende, kann ich wieder was öffnen.
Ich denke mal, dass der Speicher sehr ineffizient genutzt wird von Windows. Denn frei wäre der Speicher zwar, aber warscheinlich nicht in ausrechenden sequentiellen Böcken oder so.
Naja, habe auch O&O Clever Cache in der 30 Tage Testzeit laufen, das hilft aber leider auch nicht recht viel.

Naja, mal abwarten.

Grüße
Faux

Daniel G 31. Mai 2006 18:05

Re: "nicht genügend arbeitspeicher verfügbar"
 
Zitat:

Zitat von sECuRE
Kandidaten für viele GDI-Objekte sind bei mir iTunes (keine Ahnung warum...)

Weil iTunes das komplette Fenster selbst zeichnet....

shmia 31. Mai 2006 18:20

Re: "nicht genügend arbeitspeicher verfügbar"
 
Zitat:

Zitat von sECuRE
ich habe gehört, dass es bei 10.000 liegt. Weiß aber nicht, warum das so sein soll oder woher die Behauptung kommt.

An dieser Zahl ist wirklich was dran. (auch bei WinXP)
Mein Testprogramm kann auch maximal 10000 Edit-Controls erzeugen und dann kommt die Fehlermeldung:
Win32-Fehler: Code 14
Wer's ausprobieren will:
Ein Formular mit einem Editfeld (Inhalt '1000') + ein Button:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   i : Integer;
   x : TEdit;
begin
   try
      for i := 1 to StrToInt(Edit1.text) do
      begin
         x := TEdit.Create(Self);

         x.Left := random(Self.Width);
         x.Top := random(Self.Height);
         x.Parent := Self;
         x.Visible := True;

         x.Text := IntToStr(Self.ControlCount) + '/'+IntToStr(x.Handle);
         Application.ProcessMessages;
      end;
   finally
      Edit1.BringToFront;
      Button1.BringToFront;
   end;
end;

sECuRE 31. Mai 2006 18:53

Re: "nicht genügend arbeitspeicher verfügbar"
 
Hi,

Zitat:

Zitat von shmia
Zitat:

Zitat von sECuRE
ich habe gehört, dass es bei 10.000 liegt. Weiß aber nicht, warum das so sein soll oder woher die Behauptung kommt.

An dieser Zahl ist wirklich was dran. (auch bei WinXP)
Mein Testprogramm kann auch maximal 10000 Edit-Controls erzeugen und dann kommt die Fehlermeldung:
Win32-Fehler: Code 14
[...]

Ja, das ist aber wieder etwas anderes. Das prozessabhängige Limit liegt klar bei 10.000, ab dann denkt Windows, dass der Prozess ein Memory Leak hat und lässt nicht mehr Objekte zu.

Die 16384 als gloables Limit klingen da schon realistischer.

@Daniel G: Ja, aber die Zahl liegt bei frisch gestartetem iTunes bei ca 700, erhöht sich dann im Laufe der Zeit - ein Memory Leak?

@Opera-Benutzer: In der Changelog von v8.52 stand, dass ein GDI-Leak behoben wurde. Vielleicht waren das einfach nicht alle Leaks, vielleicht ist es aber wirklich nicht Operas Schuld?

cu

Daniel G 31. Mai 2006 19:56

Re: "nicht genügend arbeitspeicher verfügbar"
 
Zitat:

Zitat von sECuRE
Ja, aber die Zahl liegt bei frisch gestartetem iTunes bei ca 700, erhöht sich dann im Laufe der Zeit - ein Memory Leak?

Wenn es sich um einen Memory Leak handelt, dann müsste man das im Taskmanager sehen, dann würde der Speicherverbrauch immer mehr steigen. Vielleicht ist iTunes ja auch einfach schlampig programmiert und es werden nicht immer alle Handles wieder freigegeben.

sECuRE 31. Mai 2006 20:33

Re: "nicht genügend arbeitspeicher verfügbar"
 
Hi,

Zitat:

Zitat von Daniel G
Vielleicht ist iTunes ja auch einfach schlampig programmiert und es werden nicht immer alle Handles wieder freigegeben.

Genau das meinte ich in dem Fall ja mit Memory Leak.

cu

sECuRE 31. Mai 2006 23:33

Re: "nicht genügend arbeitspeicher verfügbar"
 
Hi,

hab' noch etwas gefunden:
http://www.fengyuan.com/bin/gdiobj.zip - Das Tool listet alle Programme und die Anzahl der GDI-Objekte, sortiert nach GDI-Typen auf.

cu

himitsu 1. Jun 2006 12:38

Re: "nicht genügend arbeitspeicher verfügbar"
 
Hab gerade mal geguckt, aber ein ExplorerFenstere braucht nur etwa 11 MB und knapp 120 GDIs ... 's geht also noch (von den GDIs her)
Man darf ja nicht vergessen, das die Explorer.exe für mehr als nur das eine Fenster zuständig ist ... die kümmert sich ja unter anderem noch um den Desktop und die Startleiste.

Zitat:

Zitat von sECuRE
Ja, das ist aber wieder etwas anderes. Das prozessabhängige Limit liegt klar bei 10.000, ab dann denkt Windows, dass der Prozess ein Memory Leak hat und lässt nicht mehr Objekte zu.

Wie kann es das einfach so machen ... was wäre, wenn man wirklich soviele braucht und es kein Leak ist? -.-''

sECuRE 1. Jun 2006 15:09

Re: "nicht genügend arbeitspeicher verfügbar"
 
Hi,

Zitat:

Zitat von himitsu
Zitat:

Zitat von sECuRE
Ja, das ist aber wieder etwas anderes. Das prozessabhängige Limit liegt klar bei 10.000, ab dann denkt Windows, dass der Prozess ein Memory Leak hat und lässt nicht mehr Objekte zu.

Wie kann es das einfach so machen ... was wäre, wenn man wirklich soviele braucht und es kein Leak ist? -.-''

Es gibt eine Möglichkeit, das Prozessabhängige Limit zu erhöhen. In der Regel sollte es aber ganz einfach nicht so viel brauchen - Nunja, Windows eben ;).

cu

TKC 1. Jun 2006 17:48

Re: "nicht genügend arbeitspeicher verfügbar"
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

also 16384 als gloables Limit kann ich hier nicht bestätigen.

Ich habe bei einem Kunden ein 6x19" TFT Displaypanel verbaut (Quadro NVS Grafikkarten) der hat damit überhauft keine
Probleme.

Pro Anwendung gibts auf jeden Fall ein Limit bei ~ 10000.

Im Anhang hab ich nen kleines Testprogramm, Source ist ntürlich dabei.

sECuRE 2. Jun 2006 16:27

Re: "nicht genügend arbeitspeicher verfügbar"
 
Hi,

aha, interessant. Wieviel Anwendungen nutzt dein Kunde denn so und wie hoch ist die Anzahl der GDI-Objekte insgesamt?

cu

easteregg 2. Jun 2006 16:31

Re: "nicht genügend arbeitspeicher verfügbar"
 
hm stimmt, nachdem ich jetzt mal damit 7000 erstellt habe passiert nix, alles läuft noch normal.
wenn ich jetzt aber die bsd mit nur 3000 öffne wars das wieder...

also brauchen wir nen neuen grund!

himitsu 2. Jun 2006 16:44

Re: "nicht genügend arbeitspeicher verfügbar"
 
Vielleicht ist es ja ein Zusammenspiel mehrere Faktoren GDI+RAM+Irgendwas, oder so?

Zitat:

Zitat von faux
... Ich habe auch 2 GB Speicher und auch 5 GB Virtual Memory auf der Systemplatte reserviert ...

Dir ist aber auch klar, daß ein 32 Bit Windows die 7 GB eh nicht voll ausnutzen sollte?

easteregg 2. Jun 2006 16:57

Re: "nicht genügend arbeitspeicher verfügbar"
 
könnte es vlt sein das es mit dem ram der grafikkarte zusamenhängt?

weil ich mein sone quadro hat ja einiges an speicher zur verfügung

himitsu 2. Jun 2006 17:12

Re: "nicht genügend arbeitspeicher verfügbar"
 
"Normale" Anwendugen greifen ja nicht selber/direkt auf die GraKa zu ... da sollte der Speicher in der GraKa eigentlich immer gleich hoch sein.
Ein virtuelles Bild des Desktops, wo nur von jeder Anwendung das sichbare drin ist und das gelangt erst in die Karte (oder irgendwie so ._.)

Ultimator 2. Jun 2006 17:29

Re: "nicht genügend arbeitspeicher verfügbar"
 
Ich hab jetzt mal das GDI-Testprogramm mit der Standardeinstellung von 15000 gestartet, und bekam folgende Meldung:
Zitat:

---------------------------
GDI Test
---------------------------
Fehler: Out of system resources

Erstellte Objekte: 9956
---------------------------
OK
---------------------------
1GB RAM und 256MB GraKa-Speicher (hat aber u.U. ja nix damit zu tun wie ich grade in der roten Schachtel lese)

easteregg 2. Jun 2006 17:58

Re: "nicht genügend arbeitspeicher verfügbar"
 
bei mir kam exakt das selbe ergebnis

himitsu 2. Jun 2006 18:04

Re: "nicht genügend arbeitspeicher verfügbar"
 
also 10.000 minus die paar vom Programm erstellten GIDs (welche wohl immer gleich sind) ^^

Daniel G 2. Jun 2006 18:10

Re: "nicht genügend arbeitspeicher verfügbar"
 
jo, bei 9955 Objekten war mit dem Programm auch bei mir Schluss... Nebenbei laufen noch Miranda, Firefox, Winamp, Delphi 2005 und Foxit Reader...

512 MB mit 128 MB Graka..


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:03 Uhr.
Seite 1 von 2  1 2      

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