From: Hans-Juergen Boehm <boehm@mti.sgi.com>
Cc: boehm
Subject: Re: Garbage Collection in Ada
Date: 1996/10/16
Date: 1996-10-16T00:00:00+00:00 [thread overview]
Message-ID: <3265C383.167E@mti.sgi.com> (raw)
In-Reply-To: dewar.845505704@merv
Robert Dewar wrote:
>
> No, there are general purpose allocators with much better performance.
> Just consider a simple binary allocator, at worst you waste half the
> space, i.e. a factor of 2. But perhaps I don't understand your point.
>
N log K, where N is the size of live data and K is the size ratio
between largest and smallest bound is the best worst-case bound
acheivable by a general purpose nonmoving allocator. This is an old
result due to Robson, cited in Knuth (I don't have the reference
handy). This means a binary buddy system without
coalescing is asymptotically optimal for the worst case. It does poorly
if your program allocates 1MB of 5 byte objects, deallocates them, then
allocates 1MB of 9 byte objects, deallocates them, allocates 17 byte
objects, etc. (It's also less space efficient in the typical case
tah other algorithms with worse worst-case behavior.)
> Also, there are many programs which use storage only of a certain
> limited range of sizes, and it is quite easy to make general purpose
> allocators that handle this situation MUCH more efficiently.
Yes, to a point. But many of them do not. The language spec gives me
no guarantees. And most allocator implementations don't even bother
to document such behaviour. And most of my programs allocate a wide
variety of sizes.
> In the
> limiting case consider the case where a program uses ONLY blocks
> of a fixed size. You have zero fragmentation there, but a conservative
> GC can still hold on to an arbitrary number of blocks, so you cannot
> put a bound on the effective overuse of storage.
Yes, but my programs don't behave that way.
>
> It is quite easy to bound the fragmentation effect for a given
> application.
Only if I understand the allocator. For some commonly used allocators
it's not clear anyone understands it well enough.
> It is almost impossible to bound the accidental
> holding-onto-storage effect of a conservative allocator, since
> for example, the particular floating-point values in use can
> result in holding onto storage one day, and not the next day,
> depending on where your program loads in memory.
But there are techniques that can bound the impact of such accidental
retention by ensuring that such a value causes at most a fixed, one-time
leak.
>
> Finally, there is one disadvantage of a conservative collector
> that you did not mention, namely the possibility that it will
> unexpectedly collect blocks that are in use. This can result
> from either compiler optimizations, or code that cheats with
> poitners (code which may exist in practice, and which in
> particular typically exists in the conservative allocator
> itself!
I addressed this in an earlier message that may have been lost.
It is easy to define a minimally restricted subset of even C for
which this can't happen with the right compiler (e.g. lcc or gcc
with a suitable preprocessor). Details are in my PLDI 96 paper.
(See http://reality.sgi.com/employees/boehm_mti/papers/pldi96.ps.gz)
Standard disclaimer ...
Hans-Juergen Boehm
boehm@mti.sgi.com
next prev parent reply other threads:[~1996-10-16 0:00 UTC|newest]
Thread overview: 126+ messages / expand[flat|nested] mbox.gz Atom feed top
1996-10-13 0:00 Garbage Collection in Ada Jonas Nygren
1996-10-13 0:00 ` Lars Farm
1996-10-13 0:00 ` Robert Dewar
[not found] ` <19961014115513529729@dialup105-2-16.swipnet.se>
1996-10-16 0:00 ` Robert Dewar
1996-10-16 0:00 ` Hans-Juergen Boehm
1996-10-16 0:00 ` Robert Dewar
1996-10-16 0:00 ` Hans-Juergen Boehm [this message]
1996-10-17 0:00 ` Robert Dewar
1996-10-17 0:00 ` Hans-Juergen Boehm
1996-10-17 0:00 ` Robert Dewar
1996-10-16 0:00 ` Lars Farm
1996-10-16 0:00 ` Robert Dewar
1996-10-16 0:00 ` Hans-Juergen Boehm
1996-10-17 0:00 ` Robert A Duff
1996-10-17 0:00 ` Larry Kilgallen
1996-10-17 0:00 ` Hans-Juergen Boehm
1996-10-17 0:00 ` Robert Dewar
1996-10-17 0:00 ` Hans-Juergen Boehm
1996-10-17 0:00 ` Lars Farm
1996-10-23 0:00 ` Robert Dewar
1996-10-13 0:00 ` Larry Kilgallen
1996-10-14 0:00 ` John Howard
1996-10-15 0:00 ` Lars Farm
1996-10-15 0:00 ` Robert A Duff
1996-10-15 0:00 ` Robert Dewar
1996-10-15 0:00 ` Lars Farm
1996-10-15 0:00 ` Hans-Juergen Boehm
1996-10-17 0:00 ` Thomas Kendelbacher
1996-10-17 0:00 ` Robert Dewar
1996-10-23 0:00 ` Richard A. O'Keefe
1996-10-23 0:00 ` Larry Kilgallen
1996-10-14 0:00 ` Robert A Duff
1996-10-14 0:00 ` Lars Farm
1996-10-15 0:00 ` Robert A Duff
1996-10-16 0:00 ` Lars Farm
1996-10-16 0:00 ` Robert Dewar
1996-10-17 0:00 ` Robert A Duff
1996-10-19 0:00 ` Richard Kenner
1996-10-19 0:00 ` Robert Dewar
1996-10-19 0:00 ` Lars Farm
1996-10-20 0:00 ` Robert Dewar
1996-10-20 0:00 ` Robert A Duff
1996-10-20 0:00 ` Robert Dewar
1996-10-21 0:00 ` Geert Bosch
1996-10-21 0:00 ` Hans-Juergen Boehm
1996-10-21 0:00 ` Lars Farm
1996-10-21 0:00 ` Robert Dewar
1996-10-21 0:00 ` Lars Farm
1996-10-23 0:00 ` Fergus Henderson
1996-10-24 0:00 ` Richard A. O'Keefe
1996-10-20 0:00 ` Robert A Duff
1996-10-20 0:00 ` Robert Dewar
1996-10-21 0:00 ` Hans-Juergen Boehm
1996-10-21 0:00 ` Robert Dewar
1996-10-15 0:00 ` Hans-Juergen Boehm
1996-10-15 0:00 ` Keith Thompson
1996-10-13 0:00 ` Robert Dewar
1996-10-14 0:00 ` Jon S Anthony
1996-10-15 0:00 ` Robert Dewar
1996-10-15 0:00 ` Hannes Haug
1996-10-15 0:00 ` Robert I. Eachus
1996-10-15 0:00 ` Robert Dewar
1996-10-16 0:00 ` whiting_ms@corning.com (Matt Whiting)
1996-10-16 0:00 ` Robert Dewar
1996-10-17 0:00 ` John Howard
1996-10-17 0:00 ` Robert Dewar
1996-10-18 0:00 ` Lars Farm
1996-10-20 0:00 ` Robert A Duff
1996-10-18 0:00 ` Hans-Juergen Boehm
1996-10-18 0:00 ` Lars Farm
1996-10-19 0:00 ` Robert Dewar
1996-10-20 0:00 ` Lars Farm
1996-10-21 0:00 ` Robert Dewar
1996-10-22 0:00 ` Lars Farm
1996-10-21 0:00 ` Nicolay Belofastow
1996-10-21 0:00 ` Robert Dewar
1996-10-20 0:00 ` Robert A Duff
1996-10-20 0:00 ` Robert Dewar
1996-10-22 0:00 ` Mitch Gart
1996-10-23 0:00 ` Fergus Henderson
1996-10-23 0:00 ` Hans-Juergen Boehm
1996-10-27 0:00 ` Richard Riehle
1996-10-29 0:00 ` Jon S Anthony
1996-10-30 0:00 ` Brian Rogoff
1996-10-30 0:00 ` Jonas Nygren
1996-10-30 0:00 ` James Rogers
1996-10-30 0:00 ` Jon S Anthony
1996-10-16 0:00 ` Jon S Anthony
1996-10-16 0:00 ` Jon S Anthony
1996-10-16 0:00 ` Ole-Hjalmar Kristensen FOU.TD/DELAB
1996-10-16 0:00 ` Robert Dewar
1996-10-16 0:00 ` Jon S Anthony
1996-10-17 0:00 ` Robert Dewar
1996-10-16 0:00 ` Jon S Anthony
1996-10-17 0:00 ` Hans-Juergen Boehm
1996-10-17 0:00 ` Rick Hudson
1996-10-17 0:00 ` Robert I. Eachus
1996-10-17 0:00 ` Robert Dewar
1996-10-17 0:00 ` Richard Kenner
1996-10-18 0:00 ` Jon S Anthony
1996-10-18 0:00 ` Robert Dewar
1996-10-18 0:00 ` Rick Hudson
1996-10-18 0:00 ` Jon S Anthony
1996-10-23 0:00 ` Robert Dewar
1996-10-21 0:00 ` Jon S Anthony
1996-10-21 0:00 ` Laurent Pautet
1996-10-22 0:00 ` Tapani Rundgren
1996-10-22 0:00 ` Jon S Anthony
1996-10-23 0:00 ` Jon S Anthony
1996-10-24 0:00 ` Mitch Gart
1996-10-24 0:00 ` Hans-Juergen Boehm
1996-10-24 0:00 ` Robert I. Eachus
1996-10-25 0:00 ` Jon S Anthony
1996-10-28 0:00 ` Robert I. Eachus
1996-10-29 0:00 ` Hans-Juergen Boehm
-- strict thread matches above, loose matches on Subject: below --
1996-11-02 0:00 Jon S Anthony
[not found] <01bbc6a3$4cf03480$829d6482@joy.ericsson.se>
1996-10-31 0:00 ` Mitch Gart
1996-10-31 0:00 ` Jonas Nygren
1996-11-03 0:00 ` Matthew Heaney
1996-11-06 0:00 ` Robert A Duff
1996-11-06 0:00 ` Norman H. Cohen
1996-11-01 0:00 ` Jon S Anthony
1996-11-06 0:00 ` Brian Rogoff
1996-11-07 0:00 ` Tucker Taft
1996-10-22 0:00 Brian Rogoff
1996-10-11 0:00 C++ Standardization (was: Once again, Ada absent from DoD SBIR solicitation) Dave Wood
1996-10-17 0:00 ` Garbage Collection in Ada Thomas Kendelbacher
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox