#578: Garbage Collector in 0.6 ---------------------------+------------------------------------------------ Reporter: j...@… | Owner: lsansone...@… Type: defect | Status: new Priority: major | Milestone: MacRuby 0.6 Component: MacRuby | Keywords: ---------------------------+------------------------------------------------
Comment(by j...@…): I've been debugging on this all day now, so here's a quick status update in case some bright mind goes "AHA" and fixes it :-) It seems the GC is running just fine, but macruby holds on to way more data than it needs to. In the above example, the IO layer will : *) Cache the entire file in the first call to io_read, regardless of READ_BUFFER_SIZE.[[BR]] *) allocate (filesize / READ_BUFFER_SIZE) * ByteString objects.[[BR]] Effectively doubling the amount of RAM needed to read a file. All of the above objects live on long after the block has ended, and the file has been closed. I've had a little bit of success adding the following code to the end of io_close, which is basically just a brute force attempt at getting the GC to do something to the cached data. {{{ if(io_struct->buf!=NULL){ CFDataSetLength(io_struct->buf, 0); io_struct->buf = NULL; io_struct->buf_offset = 0; } }}} -- Ticket URL: <http://www.macruby.org/trac/ticket/578#comment:1> MacRuby <http://macruby.org/> _______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel