Programm ab xxx MB im RAM neustarten.

  • Hallo zusammen,

    wir haben hier in der Firma ein Programm das permanent läuft und laufen muss. Leider hängt sich dieses Programm bei etwas über 300MB im Speicher auf und nichts geht mehr, das ist so nach etwa 6-7 Stunden nach Start der Fall. Die Firma die uns das Programm zur Verfügung gestellt hat ist momentan nicht greifbar. Mir/uns würde schon ein Tool reichen das dieses Programm neustartet, bis eine optimalere Lösung parat steht.

    Ich habe mir das so gedacht:

    Wenn Programm >300MB im RAM dann neustart des Programmes erzwingen. Nur leider war ich zu blöd in der Hilfe was darüber zufinden wie ich bei einem Programm den Speicher überwachen kann.

    Andere Ideen können natürlich auch eingebracht werden.


    LG

    Schnuecks

    2 Mal editiert, zuletzt von Schnuecks (7. Dezember 2007 um 10:04)

  • Mhm ich weiß nicht ob das in AutoIt möglich ist so gut bin ich da nicht ^^
    Aber du könntet ein Überwachungsscript schreiben welches das Script zeritgesteurer beendet und wieder neu startet.

  • kann mich leider grad nicht mehr erinnern, wo ich die func herhab...


    Spoiler anzeigen

    Global Const $PROCESS_QUERY_INFORMATION = 0x400
    Global Const $PROCESS_VM_READ = 0x10

    Func _ProcessGetMem($sProcess)
    ;get process ID
    $nPID = ProcessExists($sProcess)
    If $nPID = 0 Then Return -1
    ;get process handle, required for GetProcessMemoryInfo
    $aRet = DllCall("Kernel32.dll", "int", "OpenProcess", _
    "dword", $PROCESS_QUERY_INFORMATION+$PROCESS_VM_READ, "dword", False, "dword", $nPID)
    If @error Or ($aRet[0] = 0) Then Return -1
    $hProc = $aRet[0]
    ;create PPROCESS_MEMORY_COUNTERS to receive data, required for GetProcessMemoryInfo
    $structPROCESS_MEMORY_COUNTERS = DllStructCreate("dword; dword; uint peakmemsize; uint memsize; uint; uint; uint; uint; uint; uint")
    $nSize = DllStructGetSize($structPROCESS_MEMORY_COUNTERS)
    ;call GetProcessMemoryInfo
    $aRet = DllCall("Psapi.dll", "int", "GetProcessMemoryInfo", _
    "hwnd", $hProc, "ptr", DllStructGetPtr($structPROCESS_MEMORY_COUNTERS), "dword", $nSize)
    ;close process handle
    DllCall("Kernel32.dll", "int", "CloseHandle", "hwnd", $hProc)
    ;return memory size in kb
    Return DllStructGetData($structPROCESS_MEMORY_COUNTERS, "memsize") / 1024
    EndFunc