Fehler: Nicht genügend Speicher

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1028
Registriert: Mi, 28. Jul 2010 17:16

Fehler: Nicht genügend Speicher

Beitrag von ramses » Fr, 13. Jul 2018 8:09

Hallo

neue Updates neue Sorgen....

Die Zeile:

Code: Alles auswählen

oThread := Thread():new()
verursacht neuerdings einen Laufzeitfehler: Nicht genügend Speicher: init
Error BASE/1005

Die EXE belegt nach Taskmanager ca. 39 MB.
Das Gerät hat 4 GB Ram wovon 1.6 GB als in Verwendung markiert sind.
Windows 10 17134.165
Xbase: 2.00.972
GUI: Nein
Antivirus: Windows-Bordmittel

Wer ist auch schon über dieses Problem gestolpert?

Gruss Carlo

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14549
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Fehler: Nicht genügend Speicher

Beitrag von brandelh » Fr, 13. Jul 2018 8:58

Eventuell ist nicht der echte RAM Speicher gemeint, sondern der Stack, also der Speicher für die internen Zeiger für Variabeln, Stringverwaltung etc.

Beim Linker kann man da den Standard hoch setzen:
Hilfe Datei hat geschrieben:Linker options
The linker options pass information to ALINK specifying how an excutable file is created. It uses keywords which are always preceded by a slash.
Linker options can be specified at any place on the command line, and some of the key words can be abbreviated.

......

/ST[ACK]:<max>[,<min>]
This option sets the stack size of an Xbase++ application. <max> is a numeric value indicating the maximum stack size in bytes (default is 1 MB), while <min> optionally defines the stack size at program start.
This means that the minimum stack size is <min> bytes and it can grow dynamically at runtime to a maximum size of <max> bytes.
1.000.000 ist Standard, versuche es mal mit 4000000
Gruß
Hubert

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1028
Registriert: Mi, 28. Jul 2010 17:16

Re: Fehler: Nicht genügend Speicher

Beitrag von ramses » Fr, 13. Jul 2018 9:36

Hallo Hubert

der ist schon

Code: Alles auswählen

/stack:3000000,2000000
ich versuche mal noch höher.

Gruss Carlo

Sören
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 200
Registriert: Mo, 07. Aug 2006 10:18
Wohnort: Leipzig

Re: Fehler: Nicht genügend Speicher

Beitrag von Sören » Fr, 13. Jul 2018 16:54

Hallo Carlo,

ich hatte mal vor einiger Zeit bei Alaska angefragt, ob es in bestimmten Situationen sinnvoll wäre, den Stack-Speicher heraufzusetzen und habe folgenden Antwort vom Support erhalten:
Till hat geschrieben:der mittels /STACK reservierte Stackspeicher steht dem Prozess für andere Operationen nicht mehr zur Verfügung. Mit anderen Worten: das Hochsetzen der Stackgrösse verringert den für den Prozess zur Verfügung stehenden virtuellen Speicher und beschränkt am Ende ebenfalls die Anzahl Threads, die zur Laufzeit erzeugt werden können. /STACK sollte also wirklich nur im Ausnahmefall verwendet werden, zB. wenn die Anwendung wiederholt in Stack Overflow-Fehler läuft. Normalerweise ist die vordefinierte Stackgrösse völlig ausreichend.
Beste Grüße,
Sören

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1028
Registriert: Mi, 28. Jul 2010 17:16

Re: Fehler: Nicht genügend Speicher

Beitrag von ramses » Fr, 13. Jul 2018 19:49

Hallo Sören

Danke für den Hinweis.

ja, das war der Urzustand, weil ich von Alaska in anderem Zusammenhang auch schon die Aussage bekommen habe den /Stack Parameter wegzulassen.
Wieso wir den früher Jahrelang eingesetzt hatten weiss ich nicht mehr, deshalb habe ich den Versuchsweise wieder eingesetzt. Aber keine Veränderung festgestellt. Mit und Ohne /Stack Parameter tritt das Problem massiv gehäuft auf.


Gruss Carlo

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11427
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Fehler: Nicht genügend Speicher

Beitrag von AUGE_OHR » Fr, 13. Jul 2018 21:11

bei der Frage nach Speicher stellt sich die Frage wie du den belastet.
Xbase++ hat zwar einen Garbage Collector aber "wann" der wirkt ist nicht klar.

wenn ich XbParts über o:Childlist erreichen kann werden bei, oParent:Destroy(), alle Child "mitgenommen"
was aber wenn man die nicht über o:Childlist erreicht wie

Code: Alles auswählen

* XbpBitmap()
* XbpClipBoard()
* XbpFileDev()
* XbpFont()
* XbpMetaFile()
* XbpPrinter()
* XbpPresSpace()
diese werden erst dann aus dem Speicher entfernt wenn "Zeit" vorhanden ist.

p.s. unter native Windows muss man sich selbst um das "aufräumen" kümmern deshalb "denken" Xbase++ User gar nicht daran.
gruss by OHR
Jimmy

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1028
Registriert: Mi, 28. Jul 2010 17:16

Re: Fehler: Nicht genügend Speicher

Beitrag von ramses » Fr, 13. Jul 2018 21:40

Hallo Jimmy
bei der Frage nach Speicher stellt sich die Frage wie du den belastet.
Gute Frage. Eigentlich nicht gross.
Das Programm hat gar keine GUI Elemente es sammelt über verschiedene Schnittstellen Daten die es in Datenbanken schreibt. Es hat nur ein XBPCRT Fenster.

Gruss Carlo

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11427
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Fehler: Nicht genügend Speicher

Beitrag von AUGE_OHR » Fr, 13. Jul 2018 22:15

ramses hat geschrieben:
Fr, 13. Jul 2018 21:40
Das Programm hat gar keine GUI Elemente
ok, dann ist es nicht das Problem mit CG
ramses hat geschrieben: es sammelt über verschiedene Schnittstellen Daten die es in Datenbanken schreibt. Es hat nur ein XBPCRT Fenster.
hm ... wird der Thread Code mehrfach aufgerufen (und nicht sauber beendet) :?:
ramses hat geschrieben:Die EXE belegt nach Taskmanager ca. 39 MB.
das sind dann aber sicherlich mehr als "paar Zeilen" Code ;)
gruss by OHR
Jimmy

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7290
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: Fehler: Nicht genügend Speicher

Beitrag von Tom » Fr, 13. Jul 2018 22:28

Jimmys Tipps sind immer dafür gut, wieder was zu lernen, wenn auch nicht immer von Jimmy. :wink:
39 MB sind nichts. Ich hatte diesen Fehler bisher zweimal, bei einer vermutlich weit größeren Anwendung mit deutlich mehr Speicherbelegung (an der es nicht liegt). Einmal war eine Ressourcen-DLL zu groß geworden (6000 Icons in je 7 Größen) und einmal machte ein korrupter Druckertreiber Ärger. In diesem Bereich wird auch bei Dir die Ursache zu suchen sein. Etwas löst einen Adressierungsfehler aus. Die Meldung isr ein bisschen irreführend.
Herzlich,
Tom

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11427
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Fehler: Nicht genügend Speicher

Beitrag von AUGE_OHR » Sa, 14. Jul 2018 0:20

nun hab ich schon einen Smiley gesetzt und auch "" verwendet ...

da es keine GUI App ist sind Memory Leaks durch GUI Controls nicht das Problem.
von DLL hat Ramses nichts geschrieben und ob er viele Ressourcen verwendet hab ich noch nicht gefragt.

lediglich von Thread hat Ramses geschrieben und da hatte ich auch mal die Fehlermeldung mit "Nicht genügend Speicher"
btw. Swapdisk vorhanden :?: RAMdisk :?:

das auch korrupter Druckertreiber Ärger machen können ist jetzt noch ein Schritt weiter ... und dann käme die Hardware.

p.s. da Ramses von Update redet ist die Frage welches Update gemeint ist Windows 10 17134.165 oder Xbase: 2.00.972 :?:
gruss by OHR
Jimmy

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1028
Registriert: Mi, 28. Jul 2010 17:16

Re: Fehler: Nicht genügend Speicher

Beitrag von ramses » Sa, 14. Jul 2018 6:34

Guten Morgen zusammen
das sind dann aber sicherlich mehr als "paar Zeilen" Code
Ja natürlich. Und einige DLL's für die Kommunikation sind ja auch geladen.
Update redet ist die Frage welches Update gemeint ist Windows 10 17134.165 oder Xbase: 2.00.972
beide.
Einmal war eine Ressourcen-DLL
Eine solche gibt es nicht. 1 Icon für das Fenster ist in die EXE gelinkt.
einmal machte ein korrupter Druckertreiber Ärger
Ein Drucker bezw. Druckobjekte werden vom Programm nicht angesprochen.
Drucker sind aber installiert. Vergangene Windows-Updates brachten auch schon Ärger mit den Druckern.

Ich suche mal in diese Richtung.

Eine Ramdisk ist nicht installiert und die Festplatte etwa 30% belegt.

Gruss Carlo

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7290
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: Fehler: Nicht genügend Speicher

Beitrag von Tom » Sa, 14. Jul 2018 9:34

Was ist mit dem Alaska-Support?
Herzlich,
Tom

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1028
Registriert: Mi, 28. Jul 2010 17:16

Re: Fehler: Nicht genügend Speicher

Beitrag von ramses » Sa, 14. Jul 2018 10:46

Hallo Tom

ich muss sofort eine Lösung finden. Wenn ich selbst keine Lösung finde wende ich mich Sonntag Abend sicher an Alaska. Das Problem sollte eigentlich schon gelöst sein ......


Gruss Carlo

Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 118
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen

Re: Fehler: Nicht genügend Speicher

Beitrag von BJelinek » Sa, 14. Jul 2018 15:40

Hallo Carlo

lass doch mal das Icon weg ohne ARC Datei.

Ich hatte auch mal freudestrahlen diese in mein non GUI Programm eingebunden.

Unter Win7 hatte ich massive Probleme, vorallem übers Netzwerk.

Vielleicht ein Versuch Wert.
Gruß
Bernd

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11427
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Fehler: Nicht genügend Speicher

Beitrag von AUGE_OHR » Sa, 14. Jul 2018 18:06

ramses hat geschrieben:
Sa, 14. Jul 2018 6:34
Update redet ist die Frage welches Update gemeint ist Windows 10 17134.165 oder Xbase: 2.00.972
beide.
mit Windows 10 17134.165 hab ich solche Fehler noch nicht gehabt ... liegt es an Xbase: 2.00.972 :?:

meine Frage nach Thread ist noch offen. verwendest du mehrfach den Thread :?:
gruss by OHR
Jimmy

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1028
Registriert: Mi, 28. Jul 2010 17:16

Re: Fehler: Nicht genügend Speicher

Beitrag von ramses » Sa, 14. Jul 2018 20:20

Hallo Jimmy

ja. Ich verwende sehr oft Thread's und diesen regelmässig. Je nachdem was Sache ist werden Sie gestartet.
Ich habe nun einen Thread-Pool geschaffen in dem alle Thread's stehen. Sind hier beendete verwende ich so einen neu. Damit müssen nicht immer neue Threads geöffnet und beendet werden. Jetzt stehen 11 Thread's drin und so ist der Fehler nun seit 1 Stunde nicht mehr gekommen. Mal schauen wie es weiterläuft.

Gruss Carlo

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11427
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Fehler: Nicht genügend Speicher

Beitrag von AUGE_OHR » Sa, 14. Jul 2018 20:49

ramses hat geschrieben:
Sa, 14. Jul 2018 20:20
Ich habe nun einen Thread-Pool geschaffen in dem alle Thread's stehen.
GUT :thumbright:

Bei Thread gibt es o:New() aber kein o:Destroy() ... aber irgendwo wird ein Speicher-Bereich belegt.
auch wenn ein Thread "erledigt" ist sieht man ihn noch (eine Zeit) mit ThreadInfo() ... bis der CG aufräumt ... :roll:

---

Frage : was für ein Variabel Type nimmst du für Thread :?:

normal würde ich ja LOCAL nehmen ... aber es gab schon bei mir Fälle wo eine STATIC sich als besser erwies wenn man die mehrfach nutzt
gruss by OHR
Jimmy

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1028
Registriert: Mi, 28. Jul 2010 17:16

Re: Fehler: Nicht genügend Speicher

Beitrag von ramses » Sa, 14. Jul 2018 21:22

Hallo Jimmy

ich habe mir eine Klasse geschrieben die mir nun die Threads verwaltet.
Die Threadobjekte fülle ich in eine Protected Klassen-Var des Typs Array ab. Beim Starten suche ich einen der nicht mehr aktiv ist oder lege einen neuen an und starte Ihn mit der Aufgabe (Codeblock)

Die Methode die einen Thread startet ist vom Typ:

SYNC Method RunCodeBlock( bBlock )

Diese Methode Startet mir den Codeblock mit der Aufgabe. MIt SYNC will ich sicherstellen dass kein Zeitgleicher Zugriff auf den Threadpool erfolgt. Da verschiedene Threads neue Starten können.

Seit den ganzen Updates läuft das ganze einiges schneller evtl. kommt darum der GC mit Aufräumen nicht mehr nach.
Auf jeden Fall läufts noch immer ohne Fehler.


Gruss Carlo

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11427
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Fehler: Nicht genügend Speicher

Beitrag von AUGE_OHR » Sa, 14. Jul 2018 22:23

ramses hat geschrieben:
Sa, 14. Jul 2018 21:22
ich habe mir eine Klasse geschrieben die mir nun die Threads verwaltet.
Optimal.
ramses hat geschrieben:Und einige DLL's für die Kommunikation sind ja auch geladen.
sind das Xbase++ DLL oder 3-PP DLL ?
gruss by OHR
Jimmy

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1028
Registriert: Mi, 28. Jul 2010 17:16

Re: Fehler: Nicht genügend Speicher

Beitrag von ramses » Di, 17. Jul 2018 13:19

Hallo Jimmy

die DLL sind alles DLL's aus/für Industriesteuerungen von dessen Hersteller auf Laufzeit optimiert in C oder Assembler ersetllt. Zur Abfrage einiger PCI-X Karten mit Analog-Digital Ein/Ausgängen im PC sowie zur Kommunikation mit verschiedenen System wie Modbus über TCP oder RS485 und andere zur Einbindung in SCADA.

Der Thread-Pool mit der Klasse wie beschrieben scheint die Lösung zu sein. Bis jetzt kein weiteres Problem mehr.

Noch ein Wunsch ist offen, die Möglichkeit den Thread jeweils einen eigen Kern zuzuweisen, der wird vermutlich nie in Erfüllung gehen....

Gruss Carlo

Antworten