From: nobu@... Date: 2014-09-16T03:11:07+00:00 Subject: [ruby-core:65056] [ruby-trunk - Bug #10244] Garbage Collector not being triggered Issue #10244 has been updated by Nobuyoshi Nakada. On 2014/09/16 11:35, Michel Boaventura wrote: >>Ruby doesn't know about memories >`malloc`ed inside gdk library, so they >can't trigger GC. > > But if ruby doesn't know about this allocations, how it can collect this memory if asked manually? The object itself knows how to release the resources it acquired. ---------------------------------------- Bug #10244: Garbage Collector not being triggered https://bugs.ruby-lang.org/issues/10244#change-48924 * Author: Michel Boaventura * Status: Third Party's Issue * Priority: Normal * Assignee: * Category: core * Target version: * ruby -v: ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- Hi all, I'm trying to understand why this simple script doesn't trigger a single run of the GC and eats all memory: ```Ruby require 'gdk3' loop do Gdk::Pixbuf.new('foo.png') end ``` Changing it just a little to print ```Ruby GC.stat[:count]``` shows a constant value always: ```Ruby require 'gdk3' i = 0 loop do i += 1 Gdk::Pixbuf.new('foo.png') puts GC.stat[:count] if (i / 100).zero? end ``` Moreover, if I manually run it, then the memory usage stays constant: ```Ruby require 'gdk3' loop do Gdk::Pixbuf.new('foo.png') GC.start end ``` I understant that this is probably a gdk3 issue, but what is puzzling me is why GC isn't running automatically but if I start it manually everything works just fine. Thank you! -- https://bugs.ruby-lang.org/