Fehler: Nicht genügend Speicher

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Fehler: Nicht genügend Speicher

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Fehler: Nicht genügend Speicher

Beitrag von brandelh »

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
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Fehler: Nicht genügend Speicher

Beitrag von ramses »

Hallo Hubert

der ist schon

Code: Alles auswählen

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

Gruss Carlo
Valar Morghulis

Gruss Carlo
Sören
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 205
Registriert: Mo, 07. Aug 2006 10:18
Wohnort: Leipzig
Danksagung erhalten: 11 Mal

Re: Fehler: Nicht genügend Speicher

Beitrag von Sören »

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
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Fehler: Nicht genügend Speicher

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Fehler: Nicht genügend Speicher

Beitrag von AUGE_OHR »

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
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Fehler: Nicht genügend Speicher

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Fehler: Nicht genügend Speicher

Beitrag von AUGE_OHR »

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: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Fehler: Nicht genügend Speicher

Beitrag von Tom »

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: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Fehler: Nicht genügend Speicher

Beitrag von AUGE_OHR »

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
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Fehler: Nicht genügend Speicher

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Fehler: Nicht genügend Speicher

Beitrag von Tom »

Was ist mit dem Alaska-Support?
Herzlich,
Tom
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Fehler: Nicht genügend Speicher

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 218
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

Re: Fehler: Nicht genügend Speicher

Beitrag von BJelinek »

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.
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Fehler: Nicht genügend Speicher

Beitrag von AUGE_OHR »

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
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Fehler: Nicht genügend Speicher

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Fehler: Nicht genügend Speicher

Beitrag von AUGE_OHR »

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
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Fehler: Nicht genügend Speicher

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Fehler: Nicht genügend Speicher

Beitrag von AUGE_OHR »

ramses hat geschrieben: Sa, 14. Jul 2018 21:22ich 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
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Fehler: Nicht genügend Speicher

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Antworten