[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Tradeoffs with resources

    Date: Fri, 21 Sep 90 11:11:52 EDT
    From: CarlManning@ai.mit.edu

       Date: Thu, 20 Sep 90 23:35:30 EDT
       From: barmar@think.com

       It often makes sense to use areas along with resources.  Resource object
       constructors probably shouldn't allocate in ephemeral areas, since their
       lifetimes aren't consistent with the assumptions that EGC is optimized for.

    E.g., it may help improve the locality of objects in a resource, so
    searching through them is less likely to produce page faults (but
    hopefully your search function won't have to be very picky).

I actually wasn't talking about locality in this context, I was talking
about the point you make in the following paragraph.

    Another usage pattern: If problems are being caused because large
    numbers of your objects are outliving the EGC generations and must be
    dynamically GC'd, it may make sense to put them in a different area
    and perhaps adjust the EGC parameters for that area.  I think this
    kind of strategy may be as effective as using resources in this
    situation.  (But I admit I'm speculating; I don't have an actual
    experience with this one.)

You probably don't want to do *any* EGC on the area containing the
objects managed by the resource.  By definition, objects in resources
are long-lived, and EGC is optimized for short-lived objects.  If you
allocate a resourced object in an ephemeral area you're just wasting the
EGC's time.