Are you using v6.2.1 or earlier? If so, it's possible that v6.3 fixes this problem, because we've improved the way that phantom bytes trigger GCs.
You can try a v6.3 release candidate from http://pre-release.racket-lang.org/ At Sun, 8 Nov 2015 09:46:55 -0800 (PST), JCG wrote: > I have the following code working, collecting garbage correctly but too > lazily > for my needs: > > (define dispose-pointer (get-ffi-obj "aztec_dispose_pointer" lib (_fun > _pointer -> _void))) > (define _load-series (get-ffi-obj "aztec_load" lib (_fun _string -> > _pointer))) > > > (struct Series (s phantom)) > > > > (define (load-series id) > > (define ptr (_load-series id)) > > (unless ptr > > (raise-user-error (format "failed to load ~a" > id))) > (register-finalizer ptr dispose-pointer) > > (Series ptr (make-phantom-bytes 2000000))) > > > > The problem is that memory grows wildly, making the program inappropriate for > our system. > > If I call (collect-garbage), it collects fine. My attempt to increase the > aggressiveness of GC was via the make-phantom-bytes. I see no empirical > difference that the phantom bytes make a difference. The real object size is > about 80K. Whether 80K or 100 megs, I observe no difference in memory > consumption. > > Hopefully, I'm misunderstanding the meaning of phantom-bytes, an entity that > I > understand as existing to hint about external memory allocation taking place > that otherwise would be unknown to the collector. > > Thanks, > JG > > -- > You received this message because you are subscribed to the Google Groups > "Racket Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to racket-users+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.