wie viele Windows "Handles" ?

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

wie viele Windows "Handles" ?

Beitrag von AUGE_OHR »

hi,

wenn ich unter Xbase++ ein Object erstelle, :destroy() ich das wenn
ich es nicht mehr brauche. Wenn ich aber ein "Handle" anlege wie "lösche"
ich das den wieder ?

Wie viele "Handle" kann den so ein XP OS() ? kann man da "berechnen" ?

gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14653
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Jimmy das Ohr hat geschrieben:Wie viele "Handle" kann den so ein XP OS() ? kann man da "berechnen" ?
Hatte da nicht Till in Berlin einiges zu gesagt? Das war doch auch noch Versionsabhängig, wenn ich mich rechte rinnere. Steht das vielleicht in seinen Devcon-Unterlagen mit drin?

Jan
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
Jan hat geschrieben: Hatte da nicht Till in Berlin einiges zu gesagt? Das war doch auch noch Versionsabhängig, wenn ich mich rechte rinnere. Steht das vielleicht in seinen Devcon-Unterlagen mit drin?
na toll, ich habe mir eben den Inhalt von GUI-01 angesehen und paar
nette *.JPG und ein *.PPS gefunden ...

naja ich hätte ja noch das Video von der Session ... muss ich mir das
jetzt alles "reinziehn" ? ( bei fastforward geht Ton nur bis 2x )

fragen wir mal andersrum : Wenn ich einen P3 mit W2K Sp3 und 512MB
habe hat der so "weniger" Handle die ich benutzen kann als auf meinem
P4 2GB ?

Wenn ich nun die neue Druckroutine mit List & Label starte lege ich
scheinbar für jedes Bitmap / Datensatz mit o:GetHandle() ein Handle an.
Das sind bei einer Artikelliste schnell mal paar tausend was ich im Task-
Manager sehen kann. Mein RAM Anzeige zeigt nun :
leer 339MB
App Start 384MB
L&L Designer 443MB
Preview 444MB
Druck 473MB
Back PV 447MB
Back App 392MB
Er geht von 384 -> 473 also ca. 90MB das sollte bei 512MB noch "drin"
sein da ich auf den Workstation "alles abgeschaltet" habe was man nicht
braucht und nach dem Start der Application ca. 160MB frei sind.

... nur bei den Handles weiss ich nicht wie sich das verhält, den wenn ich
z.b. L&L verlassen haben gehen die Handles zwar gleich erheblich runter
aber wenn man dann mal wartet geht es noch paar hundert Handles weiter
runter...
Erst beim verlassen der Xbase++ Application gehen die Handles wieder
auf den Ursprungswert (langsam) zurück.

nun kommt ein "DAU" und clickt auf drucken ... und clicked ... clicked ...
irgendwas (Xbase++?) oder irgendwie (Windows?) wird es dann doch
einen Absturz geben ?

gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

hi,

ich bin mir zwar nicht 100% sicher, aber ich denke ihr bringt da was durcheinander.

Was in Berlin gesagt wurde, war die maximale Anzahl von GUI Elementen. Die war unter Win2000 höher als unter XP oder Vista (weiß nicht mehr genau) und wurde auf 9000 reduziert unter TerminalServer.

Unter DOS war die Anzahl der File-Handles beschränt (SET FILES ...), das ist jetzt nicht mehr der Fall. Ein Handle auf ein Fenster oder auf deine Grafik ist - so meine ich jedenfalls - nur ein Pointer (Zeiger) auf eine Speicheradresse im RAM. Somit unbegrenzt. Was der Zuwachs an Speicher angeht, das dürften die BMP Daten sein die du reinlädtst. Das kostet natürlich RAM und wird irgendwann den Rechner lahm legen. Ob der wieder automatisch freigegeben wird weiß ich jetzt nicht.

Aber ich kann mir nicht vorstellen dass es eine maximale POINTER Anzahl gibt.
Gruß
Hubert
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Rolf Ramacher »

Hi,

also die Variablen die man benutzt werden erst beim beenden des Programms - also die Proc Main() im Speicher wieder freigegeben.
man kann den Speicher reduzieren, wenn man die Variablen in den
Function() auf NIL setzt.

Aber wieviele zulässig sind weiß ich auch nicht.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
brandelh hat geschrieben: Was der Zuwachs an Speicher angeht, das dürften die BMP Daten sein die
du reinlädtst. Das kostet natürlich RAM und wird irgendwann den Rechner
lahm legen.
Tja den Punkt scheine ich nun erreicht zu haben :
Windows Handle 7970 -> 8271 -> 8343
Windows RAM 323MB -> 360MB -> 1130MB -> crash

Nun hab ich ja 2GB RAM und 2x Swapfile a 4GB ... warum nutzt er den
die nicht ?

gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

"out of memory" Teil2

Beitrag von AUGE_OHR »

hi,

nun hab ich es auch mit FRAX probiert :
"The following error(s) have accured:
Out of memory while expanding memory stream"
RAM 326MB, Demo start 340 geht hoch bis 879
Handel 8742 bis 8793 (braucht keine für Bitmaps)

FRAX sagt Page 8189 ( 4500 Records x 2 Bilder
und 8 Bilder pro Seite -> sind ca. 1100 Seiten ) ?

tja da bleibt mir wohl nichts anderes übrig als beide
Report Generatoren wieder zu entfernen und meine
"alte" Xbase++ "pure" Lösung zu nehmen den die
schafft es scheinbar als einziges die 9000 Bitmaps
zu "drucken".

gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

soweit ich weiß wird nie mehr als der doppelte RAM als Auslagerungsdatei belegt. Ein Prozess selbst kann nicht mehr als 2 GB belegen, wobei ich nicht weiß wie das dann berechnet wird, wenn verschiedene DLL etc. benutzt werden.
Gruß
Hubert
Antworten