AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Für diesen befehl ist nicht genügend Speicher verfügba...
Thema durchsuchen
Ansicht
Themen-Optionen

Für diesen befehl ist nicht genügend Speicher verfügba...

Ein Thema von NBG · begonnen am 23. Mär 2005 · letzter Beitrag vom 23. Mär 2005
Antwort Antwort
NBG

Registriert seit: 21. Okt 2003
Ort: HH
19 Beiträge
 
#1

Für diesen befehl ist nicht genügend Speicher verfügba...

  Alt 23. Mär 2005, 00:17
Diese fehlermeldung bekomme ich nachdem ich 2000 Klassen erzeugt habe! was kann ich tuen, wenn ich nochmehr Klassen erzeugen möchte? Denn systemspeicher steht noch zur verfügung! denn müsste ich doch eigendlich noch mehr erzeugen können oder? Gab es nicht unter Delphie nei einstellung, womit die Maximale Speichergröße für ein Programm festgelegt werden kann?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Für diesen befehl ist nicht genügend Speicher verfügba..

  Alt 23. Mär 2005, 01:19
2000 Klassen? Das ist jetzt aber ein Scherz oder? Am fehlenden Systemspeicher wird es bestimmt nicht liegen. Eher wohl daran, dass jeder Prozess unter Windows nur 2 GB Adressraum hat.

Ich würde mal überlegen, ob du nicht etwas schonender mit den Ressourcen umgehen könntest.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#3

Re: Für diesen befehl ist nicht genügend Speicher verfügba..

  Alt 23. Mär 2005, 08:11
Zitat von NBG:
nachdem ich 2000 Klassen erzeugt habe!
Du hast allerhöchstens 2000 Objekte instanziert. Man sollte wenigstens bei den richtigen Begrifflichkeiten bleiben.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Für diesen befehl ist nicht genügend Speicher verfügba..

  Alt 23. Mär 2005, 08:11
Zitat von NBG:
Diese fehlermeldung bekomme ich nachdem ich 2000 Klassen erzeugt habe! was kann ich tuen, wenn ich nochmehr Klassen erzeugen möchte? Denn systemspeicher steht noch zur verfügung! denn müsste ich doch eigendlich noch mehr erzeugen können oder? Gab es nicht unter Delphie nei einstellung, womit die Maximale Speichergröße für ein Programm festgelegt werden kann?
Es gibt unter Projektoptionen/Linker einstellmöglichkeiten bezüglich des Stacks.
Aber was machst Du in deinen Klassen? Also ich arbeite hier teilweise mit 100.000 und mehr Klassen-Instanzen. Oder meinst Du mit 2000 Klassen wirklich 2000 unterschiedliche Klassentypen und nicht nur Klasseninstanzen?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
NBG

Registriert seit: 21. Okt 2003
Ort: HH
19 Beiträge
 
#5

Re: Für diesen befehl ist nicht genügend Speicher verfügba..

  Alt 23. Mär 2005, 16:39
Ihr habt natürlich recht! Ich erzeuige 2000 Klassenistanzen.

Ich erkläre euch mal genauer was ich vor habe:
Ich habe eine TThreadList und eine Schleife in der ich laufend Thread Klassen einfüge, die widerum ein
TIdIcmpClient erzeugen, der die in der schleife hochgezählte Zahl als eine IP umwandelt und Anpingt. Ist der Host erreichbar wird die IP in eine Liste eingefügt. Ziel ist, daß ich mir aufliste, welche Hosts in meinem Netzwerk online sind. Ich wa schon erstaunt das er es geschaft hat in der schleife 2000 Threads zu erzeugen! Ich hatte sowas ähnliches nämlich schon mal unter win 98 programiert und da ist er bei mehr als 20 Laufenden Threads abgestürtst.
unter XP machter 2000??? vieleicht habt ihr diesbezüglich auch eine idee, wiso das unter XP möglich ist. Vieleicht habe ich auch unter 98 irgend ein buck gehabt, kann auch sein.
Die einstellungen im stack habe ich im übrigen auch schonmal geändert! ich habe die doppelte größe für Maxsize angegeben, mit dem erstaunlichen ergebnis, das nun nicht doppelt soviel sondern nur die hälfte an Instanzen erzeugt worden sind. Scheint also so, als werden die nicht auf dem Stack gelegt. Der Stack scheint mir soga Speicher zu rauben. Ich habe mal mit dem Tool Rambooster, anzeigen lassen, wieviel Ram die Instanzen kosten, und es sind ca 64 MB und es ist bei meiner Ram größe von 512 MB noch einiges frei. Also wie kann ich nochmer Instanzen erzeugen?
Thx!!!
  Mit Zitat antworten Zitat
Dust Signs

Registriert seit: 28. Dez 2004
Ort: Salzburg
379 Beiträge
 
#6

Re: Für diesen befehl ist nicht genügend Speicher verfügba..

  Alt 23. Mär 2005, 17:21
Das ist ein Scherz, oder? Ich hab da von einer Klasse gehört, die sich TListBox nennt und eine, die TListView heißt; und beide können 2000 IPs speichern, ohne dass man dazu 2000 Labels braucht

Dust Signs
(aka AXMD in der EE)
Die Nummer, die Sie gewählt haben, ist imaginär. Bitte drehen Sie Ihr Telefon um 90° und versuchen Sie es erneut.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Für diesen befehl ist nicht genügend Speicher verfügba..

  Alt 23. Mär 2005, 17:22
Du könntest natürlich die Threads (wo anscheinend diese Klassen drin sind) auf mehrere Anwendungen verteilen.
Also z.B. startet dein Programm sich selber nochmal und übergibt dann die ensprechenden Parameter...
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
NBG

Registriert seit: 21. Okt 2003
Ort: HH
19 Beiträge
 
#8

Re: Für diesen befehl ist nicht genügend Speicher verfügba..

  Alt 23. Mär 2005, 17:33
@Dust Signs

Hä?

Zitat:
Ist der Host erreichbar wird die IP in eine Liste eingefügt
1. von einem Label wa nie die Rede, sondern von einer Liste (Ein Memo um ganz genau zu sein)
2. nicht alle 2000 sondern nur die die online sind! in besagtem testfall NUR 2
3. Löst es leider nicht mein problem

@himitsu

ja is vieleicht möglich, erscheint mir aber nicht als sehr schöne lösung
da würde ich das dann ehr auf 2000 Threads beschränken, fall hier keine weiteren lösungen erscheinen :..(
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Für diesen befehl ist nicht genügend Speicher verfügba..

  Alt 23. Mär 2005, 17:35
Testet jeder Thread etwa eine IP?

Wenn ja, dann mach weinger und gehe die IP's nacheinander durch, da ja eh nicht unendlich Nettwerkverbindungen geöfnet sein können.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Für diesen befehl ist nicht genügend Speicher verfügba..

  Alt 23. Mär 2005, 19:15
Ich würde dir auch raten, die Anzahl der Threads zu verringern. Bei 2000 Threads gibt es genug Overhead, da das OS ständig zwischen den einzelnen Threads wechseln muss.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  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 11:46 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