Speicherauslastung so hoch?

  • Hey,

    ich schreibe aktuell an einem Programm mit dem man Screenshots erstellt und diese sofort ausgedruckt werden.

    Funktionert auch einwandfrei, nur...

    Schau ich mir den Prozess im Taskmanager an, so hat dieser ne Auslastung von knapp 7 MB..

    Da ich nich genau weis warum das so hoch ist hab ich mal alles in meinem Script auskommentiert was nur geht und hab nurnoch folgendes dastehen:

    [autoit]

    While 1
    Sleep(1000)
    WEnd

    [/autoit]

    Selbst allein diese 3 Zeilen haben eine Auslastung von 3,7 MB, ist das normal? übersehe ich etwas? muss ich noch das
    Script mit einem Programm bearbeiten?

    Gruß

    Prajoss

    "Never touch a running System!"

    Einmal editiert, zuletzt von Prajoss (26. März 2009 um 09:57)

  • also bitte was sind 7 MB oO

    ne scherz beiseite 3.7 MB sollte nur ne while haben, is bei mir auch so

    falls du mit gdi+ schaffst giebst du die objekte auch wieder frei? falls NICHT, würd ich des machen =)

  • naja 7MB und das auf nem Terminalserver mit 25 angemeldeten Usern sind mal 150 MB die mal weg sind^^

    außerdem soll es ein anderes Programm ersetzten bei dem nur 1% aller Funktionen ersetzten.

    und das hat nur 4 MB also muss ich drunter liegen^^

    Das mit den Objekten freigeben werd ich wohl machen müssen, nutzte zum Screenshotten GDI.

    Hab grad was gefunden:

    [autoit]

    DllCall("Psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)

    [/autoit]

    Die Frage ist, ist das sinnvoll oder zerschreddere ich mir damit mein Programm?

    Gruß

    Prajoss

    "Never touch a running System!"

  • keine ahnung was das bewirkt!
    mach das mal mit gdfi+ ^^ das ist wie wenn du temp files ned löschst

  • Der Befehl bewirkt, dass mein gesamtes Script nurnoch 500 KB statt 7 MB verbraucht ^^

    Das Script selbst funktioniert sogar :D

    Hoffentlich killt mir das nicht irgendwelche Prozesse ^^

    "Never touch a running System!"

  • Das zerschreddert nix:
    http://msdn.microsoft.com/en-us/library/ms682606(VS.85).aspx

    oder auch so:

    Spoiler anzeigen
    [autoit]

    Func _ReduceMemory($i_PID = -1)
    Local $ai_Return
    If $i_PID <> -1 Then
    Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
    $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
    DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle[0])
    Else
    $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Return $ai_Return[0]
    EndFunc ;==>_ReduceMemory

    [/autoit]