Hi all
Hab es soeben Kontrolliert ! Und das TIA Portal ist mit dem LAA Falg versehen also Speicherbenutzung bis 4 GB !! Geht aber real nie über 2 GB raus!
seit dem ihr mich neugierig gemacht habt, läuft jetzt immer Perfmon mit. In der letzten Woch habe ich so in etwa folgendes beobachtet. Solgange man am editieren ist, pendelt der Speicher hin und her. Übersetzt man einen Baustein macht es einen Sprung nach oben. Vor dem Download genehmigt sich TIA einen kräftigen Schluck. Genauso sieht es aus, wenn man bei selektierter CPU "compile changes only" klickt.
Fazit: vor dem download wird alles angeschaut (nicht unbedingt übersetzt)
Besonders kräftig langt TIA zu, wenn man ein neues Tag angelegt hat. Das wirkt sich so aus also ob dann immer ein "rebuild all" abläuft. In der Anfangszeit hatte ich mich schon gewundert wie folgendes geht:
1) Im Baustein eine DB-Variable verwenden die es noch nicht gibt (z.B. weil im DB noch nicht angelegt "Fermenter".Idle.LowLevel). Die Variable wird rot angezeigt.
2) Den DB hervorholen und die Variable ergänzen.
3) Den FC hervorholen, Variable ist schwarz (wenn der Datentyp passt)
4) Auf die AS laden (nicht vorher Compile klicken -- nur Download) --> alles gut.
Wenn an nun von dem Ablauf abweicht:
2a) Den FC schließen
3) Den DB hervorholen und die Variable ergänzen. Den DB schließen.
4) Auf die AS laden (nicht vorher Compile klicken -- nur Download) --> alles gut.
Fazit: Es sit völlig egal, ob man vor dem Landen explizit übersetzt oder nicht. Vor dem Laden wird alles übersetzt und wenn möglich werden alle roten Stellen automatisch korrigiert. Danach muss man das Projekt speichern, denn es wurde implizit verändert.
Hat mich am Anfang etwas geärgert, weil nicht immer klar war wo TIA überall an meinen Bausteinen Änderungen vor nimmt. Ich hatte bedenken, dass die da mal was nicht so hinbekommen wie ich mir das gewünscht hätte. Aber seit 10.5 konnte ich keinen Fehler finden. (Was nicht heißt, dass da keiner ist
). Oft klappt der Automatismus, manchmal aber auch nicht (z.B. weil der Datentyp nicht passt), aber dann ist sowieso Handarbeit angesagt.
Fazit: Compile kostet den meisten Speicher.
Problem: Es gibt Speicherlöcher! Laut Theorie hat .Net einen GarabageCollector, der alles, was nicht mehr gebraucht wird, weg räumt und den Speicher wieder zur Verfügung stellt. Aber die Speicherauslastung geht in den seltensten Fällen auf den Wert vor dem Compile zurück. Die Fieberkurve steigt und steigt. Und irgendwo zwischen 1.4 GB und 1.7 GB war in dieser Woche immer Schluß. Weit weg von 4GB! ??
Offene Fragen: Perfmon kann auch den freien Speicher anzeigen! Das verwirrt mich aber total. Nach so manchem Übersetzungslauf steigt der freie Speicher deutlich an. Die Summe aus zugesichert und frei ist konstant -- gut so. Aber wenn soviel frei ist, warum bekommt TIA die dann nicht? Vermutung: der Speicher fragmentiert (wie eine Festplatte). Ich hab da bei CodeGuru einiges gelesen. Da ich aber kein Informatiker bin, sondern bloß Techniker, prallen da zwei Denkwelten aufeinander ... aber ich bleib dran. Wenn es aber an sowas wie Fragmentierung liegt, dann hätte ich jetzt keine Ahnung wie man aus der Zwickmühle raus kommt. Gut dass das nicht ein Problem ist, das ich lösen muss. Blöd, dass es micht mit trifft.
Ein schönen Tag noch
Helle Barde