Hallo,
eins meiner Programme verursacht nach recht kurzer Laufzeit (ca 12h) eine CPU Auslastung von (permanent) 99% und belegt "Quasi"
den ganzen Arbeitsspeicher (auf meinem Server immerhin 512MB, bzw was eben noch frei ist (normalerweise ca 200 MB genutzt))
Das ist nicht nur "unschön" sondern wirkt sich natürlich auch wahnsinnig auf die Geschwindigkeit und Temperatur der CPU aus (68° statt 55)
Den ganzen Quelltext zu posten wäre nun irrsinnig, aber Grundlegene Strukturen verwende ich immer wieder, und wollte mal "wissen" ob der
Speicher danach wieder freigegeben wird, oder ob das alles als "leiche" rumschwirrt...
1.) In einer LV zeige ich eine "recht ausführliche" Log an, die auch als TXT gespeichert wird. Wäre es ratsam das LV ab und zu zu "leeren" zwecks Speicherbelastung? (die log.txt hingegen hat nach einem Tag ca 800 KB - 1500 KB)
2.)
z.B so ein Konstrukt taucht öfter auf
Hier wir ja jedesmal speicher für das UIDMatch-Objekt erstellt - wird dieser beim nächsten "For-"Durchgang wieder freigegeben, erst mit ende der funktion, oder GAR nicht ?!
Dass das Prog sehr Speicherlastig ist, ist klar, da es um die Synchronisation 2er ICS-Files geht, die erst komplett eingelesen und dann per regex in mehrer Regex.MatchCollections aufgeteilt werden...
Habe bereits ein Topic dazu hier gefunden, allerdings wollte ich das nicht ausgraben und es führte auch zu keiner Lösung...
Zur CPU-Auslatung:
Da in regelmäßigen Intervallen "synchronisiert" werden soll, verwende ich folgendes Konstrukt (Je nach gespeichertem Wert in der Ini)
okay, anmerkung: Es wäre wohl wesentlich entlastender die Config-Var nicht jedesmal auszulesen, sondern onload und dann global zu speichern, oder ?
Wie könnte ich einen solchen "Teitgeber" sparsamer gestalten?! (Timer tick = 1000)
grüße,
dognose
eins meiner Programme verursacht nach recht kurzer Laufzeit (ca 12h) eine CPU Auslastung von (permanent) 99% und belegt "Quasi"
den ganzen Arbeitsspeicher (auf meinem Server immerhin 512MB, bzw was eben noch frei ist (normalerweise ca 200 MB genutzt))
Das ist nicht nur "unschön" sondern wirkt sich natürlich auch wahnsinnig auf die Geschwindigkeit und Temperatur der CPU aus (68° statt 55)
Den ganzen Quelltext zu posten wäre nun irrsinnig, aber Grundlegene Strukturen verwende ich immer wieder, und wollte mal "wissen" ob der
Speicher danach wieder freigegeben wird, oder ob das alles als "leiche" rumschwirrt...
1.) In einer LV zeige ich eine "recht ausführliche" Log an, die auch als TXT gespeichert wird. Wäre es ratsam das LV ab und zu zu "leeren" zwecks Speicherbelastung? (die log.txt hingegen hat nach einem Tag ca 800 KB - 1500 KB)
2.)
z.B so ein Konstrukt taucht öfter auf
Hier wir ja jedesmal speicher für das UIDMatch-Objekt erstellt - wird dieser beim nächsten "For-"Durchgang wieder freigegeben, erst mit ende der funktion, oder GAR nicht ?!
Dass das Prog sehr Speicherlastig ist, ist klar, da es um die Synchronisation 2er ICS-Files geht, die erst komplett eingelesen und dann per regex in mehrer Regex.MatchCollections aufgeteilt werden...
Habe bereits ein Topic dazu hier gefunden, allerdings wollte ich das nicht ausgraben und es führte auch zu keiner Lösung...
Zur CPU-Auslatung:
Da in regelmäßigen Intervallen "synchronisiert" werden soll, verwende ich folgendes Konstrukt (Je nach gespeichertem Wert in der Ini)
VB.NET-Quellcode
- Public seconds As Integer
- Public totalseconds As Integer
- Public minutes As Integer
- Private Sub sync_timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles sync_timer.Tick
- seconds += 1
- totalseconds += 1
- If seconds = 59 Then
- minutes += 1
- seconds = 0
- End If
- If minutes >= ini.GetINIInt("config.ini", "root", "intervall", 30) Then
- functions.SyncAllTasks()
- minutes = 0
- seconds = 0
- totalseconds = 0
- ProgressBar1.Value = 0
- End If
- 'progressbar
- Dim value As Integer = totalseconds / (ini.GetINIInt("config.ini", "root", "intervall", 30) * 60) * 100
- If value > 100 Then
- value = 100
- End If
- ProgressBar1.Value = value
- End Sub
okay, anmerkung: Es wäre wohl wesentlich entlastender die Config-Var nicht jedesmal auszulesen, sondern onload und dann global zu speichern, oder ?
Wie könnte ich einen solchen "Teitgeber" sparsamer gestalten?! (Timer tick = 1000)
grüße,
dognose