Speicherverbrauch der .exe laut Taskmanager

Für allgemeine Fragen zur Programmierung mit PureBasic.
manunidi
Beiträge: 109
Registriert: 12.04.2006 22:44

Beitrag von manunidi »

Weiß da keiner was? Ist nähmlich finde ich ein sehr interessantes Phänomen das mit dem minimieren und wieder maximieren!
Benutzeravatar
PBZecke
Beiträge: 399
Registriert: 02.09.2004 17:34

Beitrag von PBZecke »

Das mit dem Speicherverbrauch ist doch heutzutage zweitrangig! So lange
Dein Programm Windows nicht zwingt die Auslagerungsdatei auszulasten :lol:
Wir benutzen doch kein DOS mehr wo wir gezwungen sind alles in die 640 Kb
zu quetchen!
Nein, ich habe die Suche nicht benutzt, und deshalb auch nichts dazu gefunden... :lol:
Benutzeravatar
Leonhard
Beiträge: 602
Registriert: 01.03.2006 21:25

Beitrag von Leonhard »

Die Größe kommt von den eingeladenen Libs (wie schon erörtert) und der mänge der benutzten Variablen/Listen/Array/ ...

An Windows gefällt mir nicht, das eine Lib für jedes Programm einzelnd in den Speicher geladen wird. Ich bendutze für extremfälle den 'TuneUp Process Manager'. Dieser zeigt mir alle geladenen DLL´s an. Da findet man die selbe DLL im selben Ordner oftmals 6-10 mal gelanden (die schlimste ist die 'kernel32.dll'. rund 20 mal gelanden).
Exabot
Beiträge: 63
Registriert: 10.12.2004 09:50

Beitrag von Exabot »

Hier muss ich Windows in Schutz nehmen:
DLLs einmal geladen!
20x benutzt

Heisst:
1x Speicherverbrauch für den Code,
20x Speicher für die Daten (verwendete Variablen)!

Gruss
Spider
manunidi
Beiträge: 109
Registriert: 12.04.2006 22:44

Beitrag von manunidi »

Das mit dem einmal laden und 20 mal benutzt hab ich auch schon gehört!!!

Meine Frage:

Ist es möglich per windows api. z.b. ein Programm zu erzeugen, das ein unsichtbares fenster erstellt, dieses minimiert und dann maximiert, dann wäre nämlich der raumverbrauch gigantisch wenig!!! Also eben nur der wikrlich gebrauchte!! Ich fänds genial!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

dieser minimieren-maximieren-effekt ist wirklich interessant.

ist das wirklich so? hat jemand eine erklärung?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
manunidi
Beiträge: 109
Registriert: 12.04.2006 22:44

Beitrag von manunidi »

ich schätze das windows beim minimieren eines fenster, alles nicht gebrauchte "auslagert", aber ka, was genau passiert!!! Weiß da jemand genaueres? Bzw, ist meine frage von meinem letzten thread möglich?
Benutzeravatar
AndyMars
Beiträge: 141
Registriert: 08.09.2004 11:59
Computerausstattung: Win11 Prof 64bit, i5-13500 @ 4.8 GHz, 32GB RAM, Nvidia RTX 4070 TI
Wohnort: Zürich, Schweiz
Kontaktdaten:

Speicherverbrauch der .exe laut Taskmanager

Beitrag von AndyMars »

Häm, häm - ist ja schon etwas alt, der Beitrag - bin halt mal wieder darüber gestolpert.

Ich habe dazu noch einige kleine Hinweise, bzw. Erklärungen gefunden:
http://www.puls200.de/?p=221
http://www.dotnetpro.de/community/newsg ... px?id=2740

Zumindest findet man da die Erklärung, weshalb sich Programme in Windows so verhalten:
Die Speicherverwaltung belegt bei Programmstart eine gewisse Menge virtuellen Speicher, um später schnell bei Bedarf dem Programm diesen Speicher zur Verfügung stellen zu können.
...und...
Der Speicher wird von Windows gemäß der Priorisierung allokiert. Minimiert man die Anwendung, kann man sofort sehen wie der Speicherverbrauch zurückgeht.
Dies sei einer der Gründe, weshalb die Angaben vom Taskmanager nur bedingt als Hinweis auf die Performance eines Programmes verwendet werden sollte...


Ob dieses System.GC.Collect() Objekt geeignet wäre, den Speicherverbrauch zu verkleinern, müsste jemand mit mehr Knowhow beantworten. Fragt sich, ob dieses Objekt eh nicht DotNet spezifisch ist und ob es dann eine API Entsprechung gäbe...

Jedenfalls finde ich folgenden Vergleich dazu doch sehr treffend (zumindest für mich, der davon nicht wirklich viel versteht):
Finger weg von der Garbage-Collection. Du greifst dem Busfahrer doch auch nicht ins Steuer, wenn Du eine Abkürzung siehst, oder?
Grüsse von AndyMars
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Ich würde mir da nicht so die Gedanken drum machen, Windows verwaltet den Speicher schon angemessen. Wenn du die Anwendung minimierst, wird das meiste ins Swapfile ausgelagert, um physikalischen Speicher für andere Anwendungen freizugeben.

Wenn das mit der Priotiät und der Speicherreservierung stimmt, dann könntest du natürlich einfach die Prozessprioriät runterschrauben. Macht aber nur Sinn für Programme, die im Hintergrund laufen sollen und möglichst wenig anderen Anwendungen im Weg sein sollen.

Btw.: PureBasic-Programme belegen wesentlich weniger Speicher als Visual Basic Programme. 8)
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
myself
Beiträge: 67
Registriert: 18.03.2006 12:48

Beitrag von myself »

Leonhard hat geschrieben:Die Größe kommt von den eingeladenen Libs (wie schon erörtert) und der mänge der benutzten Variablen/Listen/Array/ ...

An Windows gefällt mir nicht, das eine Lib für jedes Programm einzelnd in den Speicher geladen wird. Ich bendutze für extremfälle den 'TuneUp Process Manager'. Dieser zeigt mir alle geladenen DLL´s an. Da findet man die selbe DLL im selben Ordner oftmals 6-10 mal gelanden (die schlimste ist die 'kernel32.dll'. rund 20 mal gelanden).
Naja kernel32.dll enthält die LoadLibraryA funktion, welche benötigt wird um weitere DLLs zu laden, finde ich irgendwie logisch..
Antworten