Parabol 1 Geschrieben 8. August 2023 Melden Teilen Geschrieben 8. August 2023 Guten Tag. Zeile: $Auflistung = Get-Childitem -Literalpath 'c:\windows\servicing' -Recurse -Force -ErrorAction:SilentlyContinue RAM wird dadurch von 35 auf 1400 MB gefüllt. Keiner von Varianten leert die RAM: 1. $Auflistung = $Null 2. for ($i = 0; $i -le ($Auflistung.length -1); $i++) { $Auflistung[$i] = $null } Kann man RAM leeren ohne, daß man die Sitzung schließt? Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 8. August 2023 Melden Teilen Geschrieben 8. August 2023 vor 12 Minuten schrieb Parabol: Kann man RAM leeren Wozu? Gibt es ein Problem, welches Du damit lösen möchtest? Hast Du schon versucht die "Garbage Collection" von PowerShell zu triggern? Zitieren Link zu diesem Kommentar
Beste Lösung mwiederkehr 373 Geschrieben 9. August 2023 Beste Lösung Melden Teilen Geschrieben 9. August 2023 Da das Aufräumen durch den Garbage Collector Ressourcen benötigt, macht er es nur, wenn nötig. Es bringt nichts, alle paar Millisekunden aufzuräumen, wenn vielleicht ein paar Sekunden später der ganze Prozess entsorgt werden kann. Ein Kriterium für das Starten des Aufräumvorgangs ist Speicherknappheit. Wahrscheinlich hast Du in Deinem Rechner genügend RAM, sodass es auf das Gigabyte mehr oder weniger nicht ankommt. Selbst wenn man den Garbage Collector mit "[System.GC]::Collect()" manuell startet, räumt er ohne Zwang nicht auf. Das scheint aber spezifisch für die PowerShell zu sein, bei .NET macht er es sonst schon. Zwingen kann man ihn mit "[System.GC]::GetTotalMemory(‘forcefullcollection’) | out-null". (Vorher muss natürlich die Variable mit "Clear-Variable" geleert werden.) Quelle: https://www.jhouseconsulting.com/2017/09/25/addressing-the-powershell-garbage-collection-bug-1825 Aber das sollte nicht notwendig sein. Ich betreibe .NET-Dienste, die wochenlang laufen und täglich grosse Datenmengen verarbeiten. Wenn man die Objekte sauber leert, macht der GC seine Arbeit zuverlässig und man hat keine Memory Leaks zu befürchten. Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 9. August 2023 Melden Teilen Geschrieben 9. August 2023 Eventuell damit: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/clear-variable?view=powershell-7.3 Den Ram räumt dann aber üblicherweise erst der Garbage Collector auf. Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 9. August 2023 Melden Teilen Geschrieben 9. August 2023 Moin, [OT] mir fällt bei sowas immer der Garbage Collector des C64 ein, der das System minutenlang - oder auch dauerhaft - lahmlegen konnte. Den konnte man auch triggern (PRINT FRE(0)), aber das war keine Freude. [/OT] Gruß, Nils 1 Zitieren Link zu diesem Kommentar
Parabol 1 Geschrieben 9. August 2023 Autor Melden Teilen Geschrieben 9. August 2023 Danke. "System.GC" bietet hier das, was ich suche. Ich werde mich dann weiter einlesen. Habe einfach gemerkt, daß wenn ich eine Variable, wie ggf $Auflistung, leere und sie neu belege, steigt RAM-Belegung weiter. Wann es automatisch freigegeben wird, will ich nicht warten - Verbrauch kann groß sein. Und wenn die automatische Bereinigung mitten in der Bearbeitung, kurz bevor es auf SSD geschrieben wird, passiert, dann mache ich es lieber früher, wenn es so wie so wegen interaktive Pause nichts läuft. Nebenbei habe ich beim experimentieren mit der Klasse gemerkt, daß wenn ich mehrere unterschiedlich genannte Auflistungen mache und eine, welche ich irgendwo am Anfang gemacht habe, lösche, dann wird RAM nur freigegeben, wenn man [System.GC]::Collect(2,1,$true,$true) macht. Scheint die konsequenteste Methode zu sein. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 9. August 2023 Melden Teilen Geschrieben 9. August 2023 Nur nochmal aus Neugier ... Am 8.8.2023 um 18:57 schrieb BOfH_666: Wozu? Gibt es ein Problem, welches Du damit lösen möchtest? Zitieren Link zu diesem Kommentar
Parabol 1 Geschrieben 10. August 2023 Autor Melden Teilen Geschrieben 10. August 2023 Nein. Bin nicht darauf gestoßen. Dieses Problem ist zumindestens im Kopf und vielleicht nur im Kopf. 1 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.