Re[2]: [Gc] Problems with GC performance using gcj (Repost text only)

Ivan Maidanski ivmai at
Wed Jan 12 12:34:08 PST 2011


Wed, 12 Jan 2011 13:30:48 +1300 письмо от Bruce Hoult <bruce at>:

> On Wed, Jan 12, 2011 at 4:58 AM, Ben Keppler <bkeppler at> wrote:
> > NOTE:  Reposting as using text only.
> > NOTE:  This question was also posted on the gcj mailing list.
> >
> > We are using gcj for a time sensitive application.  One of the requirements
> of the application is that messages be transmitted within a 60ms timeframe. 
> Unfortunately, the Boehm GC used in gcj is not generational and thus every
> collection is of the "stop the world" variety.  We are observing (using
> "GC_PRINT_STATS") regular collections that stop the world for periods in the
> 400ms range.  This is a problem for us.
> How big is your heap? And what is the CPU?
> I'm seeing pause times of ~40 mS in a 75 MB heap on the d2c Dylan
> compiler on my Core i7 @3.44 GHz. That with a pure stop-the-world
> setup.

To be precise, is the collector (you used for this benchmark) compiled with --enable-parallel-mark or not?

> p.s. parallel-mark makes it *slower*, no matter whether I use anything
> between 2 and 8 threads, so that is off
> p.s.2. I actually get about 20% more throughput by preallocating the
> heap to around 256 - 512 MB. There are still a few GCs but a lot fewer
> and they still take ~40 mS even in the larger heap (the amount of live
> data is the same).  A typical compile for my test program allocates
> around 1.4 GB.  Disabling GCs/using GC_malloc_uncollectable, or using
> malloc(), or even a simple bump-the-ptr malloc is slower than using
> GC_malloc -- at some point it takes more time to create VM space than
> to GC what you already have.

More information about the Gc mailing list