[ruby-de] GC.start tut wirklich nichts!

Die Optimisten inform at die-optimisten.net
Mi Jun 28 15:58:10 JST 2017


Hallo,
nur leider gibt Ruby auch intern den Speicher   nach der 1.Hälfte ( "2x 
untereinander") nicht frei,
denn am Schluß wird der doppelte Speicher verbraucht!

Der Programmierer weiß (hoffentlich besser als der GC) wann der Speicher 
freigegeben werden sollte, (und vielleicht für andere Prozesse benötigt 
wird). Daher sollte der GC auch den Prozeß-Speicher freigeben (und dem 
PC dann das Swappen ersparen) [kann ich unkompliziert abfragen, ob 
bestimmte Vars im Ram oder Swap liegen?]
Ich denke ein free ist im Vergleich zur Arbeit vom  GC eine Kleinigkeit. 
Das Betriebssystem entscheidet dann (besser!), was geswappt wird (als 
wenn der Ruby viel ungenutztes Ram nicht freigibt)


fG Andreas


On 2017-06-26 19:25, Norbert Melzer wrote:
>
> Nur weil der GC nicht mehr benötigte Objekte aufgeräumt hat heißt das 
> nicht, dass der ruby Prozess den Speicher an das Betriebssystem zurück 
> gibt. Im Gegenteil, der Speicher wird gerne vom Prozess behalten um 
> dann aufwändige neu Anforderungen zu vermeiden.
>
>
> Die Optimisten <inform at die-optimisten.net 
> <mailto:inform at die-optimisten.net>> schrieb am Mo., 26. Juni 2017, 15:57:
>
>     Hallo,
>
>     arr=[]
>     (1..1000000).map {| arr << ["meinString", "2", "3" }
>     arr=nil
>     GC.start
>     sleep 1
>
>     arr=nil scheint auch belanglos: wenn man obiges 2x untereinander
>     ausführt, braucht er (fast) doppelt so viel RAM.
>
>     Beginnt der GC trotz GC.start nicht sofort?
>     => ist ein sleep(1) hilfreich ?
>
>     Wie erhalte ich das gewünschte Ergebnis vom GC?
>
>     danke
>     Andreas
>



Mehr Informationen über die Mailingliste ruby-de