Folgendes kleines Tool soll die Ausfallzeiten meiner Internetverbindung loggen:
Global $status = 0, $IsCon, $icon[]=[-101, -99]
Global $hDLL = DllOpen("connect.dll")
TraySetIcon("netshell.dll", -101)
While 1
$IsCon = DllCall($hDLL, 'long', 'IsInternetConnected')
If @error Then ContinueLoop
If $status <> $IsCon[0] Then
TraySetIcon("netshell.dll", $icon[$IsCon[0]])
FileWriteLine("connection.log", @MDAY & "." & @MON & " " & @HOUR & ":" & @MIN & ":" & @SEC & (($IsCon[0]) ? " off":" on" & @CRLF))
$status = $IsCon[0]
EndIf
sleep(3000)
WEnd
Alles anzeigen
Um den Speicherverbrauch bei tagelanger Laufzeit zu reduzieren, habe ich schon alle Variablen global deklariert, so daß eigentlich nach dem Start kein weiterer Speicher mehr benötigt werden sollte. In der Praxis funktioniert das aber anscheinend doch nicht so, Zwar langsam, aber stetig belegt das Script immer mehr RAM.
Da ich keine Idee habe, woran das noch liegen könnte, hab ich im Task Manager mal ein Speicherabbild des laufenden Prozesses anlegen lassen. Der Prozess belegt laut TaskMan beim Start ~2.888 Kb, das Abbild ist aber schon 57Mb groß (oops?)
Im Netz finden sich nur Analysetips für die Crashdumps von Windows.
Womit/Wie kann man sich ansehen, welche Variable (oder Daten) da im RAM anscheinend nicht an die vorgesehenen Adressen (Variablen) geschrieben werden?
Und woran liegt es, daß das Script immer noch RAM frisst? Was hab ich da falsch gemacht?