A couple of memory management related questions

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

A couple of memory management related questions

Eliot Miranda-2
 
Hi All,

    I've started working on a new GC for Cog and have a few questions.

1. does anyone have a copy of Joel Bartlett's J. F. Bartlett. A generational, compacting collector for C++. In E. Jul and N.-C. Juul, editors, OOPSLA/ECOOP ‘90 Workshop on Garbage Collection in Object-Oriented Systems, Oct. 1990. ?

2. what's the largest number of classes you've got in your most complex image and/or what's the largest number of classes you're ever created in an image?  a.k.a.  is 64k classes enough (16 bits), or is 1m classes enough (24 bits)?

3. do you have any personal recommendations, or example code, of systems that combine generation scavenging and/or compaction with object pinning?

TIA,
Eliot
Reply | Threaded
Open this post in threaded view
|

Re: A couple of memory management related questions

ungar
 
Can't resist the following unproductive comment:  Object pinning? Ugh!!

I realize you probably, after much thought, have decided you cannot avoid pinning, but its consequences scare the you-know-what out of me.

If you supported one class per object, then you could get rid of the identityHash field in the header, by making it an instance method. ;-)
Oh wait a minute, since classes are objects, you would need oops larger than 64-bits each. ;-)

- David



On Jun 15, 2010, at 2:17 PM, Eliot Miranda wrote:

Hi All,

    I've started working on a new GC for Cog and have a few questions.

1. does anyone have a copy of Joel Bartlett's J. F. Bartlett. A generational, compacting collector for C++. In E. Jul and N.-C. Juul, editors, OOPSLA/ECOOP ‘90 Workshop on Garbage Collection in Object-Oriented Systems, Oct. 1990. ?

2. what's the largest number of classes you've got in your most complex image and/or what's the largest number of classes you're ever created in an image?  a.k.a.  is 64k classes enough (16 bits), or is 1m classes enough (24 bits)?

3. do you have any personal recommendations, or example code, of systems that combine generation scavenging and/or compaction with object pinning?

TIA,
Eliot

Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] A couple of memory management related questions

Yoshiki Ohshima-2
In reply to this post by Eliot Miranda-2
 
At Tue, 15 Jun 2010 16:44:57 -0500,
Ralph Johnson wrote:
>
> If people define classes by hand, I imagine 64k would be enough.  But
> suppose they are using light-weight classes, i.e. giving each object
> its own behavior.   Then it would be fairly easy to have more than 64K
> of them, though 1M is still a reasonable limit.
>
> What is the difference in cost between choosing 64K as the limit and
> choosing 1M?  I know, one byte, but what else would you use that byte
> for?

  If the next highest notch from 16 bit is 24 bit but not 20 bit, that
would be 16M but not 1M.

  The big images in "our" use cases is with several million objects
(not that big in other standard), so if each object theoretically had
a distinct class, it would only barely fits.  But in reality 16M
classes and an object occupies around 40 byte each on avarage, only 6
instances or such per class on average before hitting 4GB.  So, for
32-bit address space in mind, 16M classes would be a lot.  1M classes
would be 100 instances on average (where the distribution of instance
count is highly skewed so average would not make so much sense
however), it still would be okay.

  (As Ralph asked, what are the other things that are competing the
bits?)

-- Yoshiki
Reply | Threaded
Open this post in threaded view
|

Re: A couple of memory management related questions

Eliot Miranda-2
In reply to this post by Eliot Miranda-2
 


On Tue, Jun 15, 2010 at 2:17 PM, Eliot Miranda <[hidden email]> wrote:
Hi All,

    I've started working on a new GC for Cog and have a few questions.

1. does anyone have a copy of Joel Bartlett's J. F. Bartlett. A generational, compacting collector for C++. In E. Jul and N.-C. Juul, editors, OOPSLA/ECOOP ‘90 Workshop on Garbage Collection in Object-Oriented Systems, Oct. 1990. ?

thanks to all 5 of you who've provided this.  Ta!
 

2. what's the largest number of classes you've got in your most complex image and/or what's the largest number of classes you're ever created in an image?  a.k.a.  is 64k classes enough (16 bits), or is 1m classes enough (24 bits)?

3. do you have any personal recommendations, or example code, of systems that combine generation scavenging and/or compaction with object pinning?

TIA,
Eliot