new principle of division between structures and classes

John Reimer terminal.node at gmail.com
Mon Jan 12 19:31:04 PST 2009


Hello Bill,

> 2009/1/13 Weed <resume755 at mail.ru>:
> 
>> Andrei Alexandrescu пишет:
>> 
>>> Brad Roberts wrote:
>>> 
>>>> Andrei Alexandrescu wrote:
>>>> 
>>>>> Weed wrote:
>>>>> 
>>>>>> Weed пишет:
>>>>>> 
>>>>>>>>> 4. Java and C# also uses objects by reference? But both these
>>>>>>>>> of
>>>>>>>>> language are interpreted. I assume that the interpreter
>>>>>>>>> generally
>>>>>>>>> with
>>>>>>>>> identical speed allocates memory in a heap and in a stack,
>>>>>>>>> therefore
>>>>>>>>> authors of these languages and used reference model.
>>>>>>>> Neither of these languages are interpreted, they both are
>>>>>>>> compiled
>>>>>>>> into
>>>>>>>> native code at runtime.
>>>>>>> Oh!:) but I suspect such classes scheme somehow correspond with
>>>>>>> JIT-compilation.
>>>>>>> 
>>>>>> I guess allocation in Java occurs fast because of usage of the
>>>>>> its own
>>>>>> memory manager.
>>>>>> I do not know how it is fair, but:
>>>>>> http://www.ibm.com/developerworks/java/library/j-jtp09275.html
>>>>>> "Pop quiz: Which language boasts faster raw allocation
>>>>>> performance, the Java language, or C/C++? The answer may surprise
>>>>>> you -- allocation in modern JVMs is far faster than the best
>>>>>> performing malloc implementations. The common code path for new
>>>>>> Object() in HotSpot 1.4.2 and later is approximately 10 machine
>>>>>> instructions (data provided by Sun; see Resources), whereas the
>>>>>> best performing malloc implementations in C require on average
>>>>>> between 60 and 100 instructions per call (Detlefs, et. al.; see
>>>>>> Resources)."
>>>>>> 
>>>>> Meh, that should be taken with a grain of salt. An allocator that
>>>>> only bumps a pointer will simply eat more memory and be less
>>>>> cache-friendly. Many applications aren't that thrilled with the
>>>>> costs of such a model.
>>>>> 
>>>>> Andrei
>>>>> 
>>>> Take it as nicely seasoned.  The current jvm gc and memory
>>>> subsystem is _extremely_ clever.  However, it completely relies on
>>>> the ability to move objects during garbage collection.  If it was
>>>> purely the allocator that behaved that way, you'd be right.  But
>>>> it's interaction with the gc is where the system comes together to
>>>> form a useful whole.
>>>> 
>>> I understand. My point is that a 10-cycles-per-allocation allocator
>>> 
>> 10 *cycles* per allocation?
>> 
>>> will
>>> necessarily use more memory than one that attempts to reuse memory.
>>> There's no way around that. I mean we know what those cycles do :o).
>>> Some application don't work well with that. Escape analysis does
>>> reduce
>>> the number of cache-unfriendly patterns, but, as of today, not to
>>> the
>>> point the issue can be safely ignored.
>>> There's no contention that GC has made great progress lately, and
>>> that's a great thing.
>>> 
>> In any case, we cannot add such memory manager in D. And such
>> resource allocation does not approach us, and mandatory creation of
>> objects in a heap does not approach for D.
>> 
> I'm not and expert in garbage collection but...
> An interesting point was made yesterday on the GDAlgorithms mailing
> list.  Acording to this one game industry veteran, you don't need a
> fully moving garbage collector to get many of the benefits.  If *some*
> of the memory can be moved around then often that's enough to fill in
> the gaps and keep fragmentation down.
> So it may be worth while to have a special kind construct for
> containing data that the compiler is free to move around.  This type
> would have a hidden pointer inside of it that can be moved around by
> the gc, but applications would not be allowed to access that pointer.
> And I suppose that means all access to the data would given via
> lvalue only.   Probably wouldn't take much on the part of the GC to
> provide the necessary hooks.  Just some sort of "relocatable alloc"
> call.  Rest could probably be handled in higher level libs.
> 
> But like I said I don't know much about GC.
> 
> --bb
> 


Recently, I started looking into garbage collection theory.  Of course, the 
first source I went to was Hans Boem's.  Here's a couple of links that might 
be interesting:

http://www.hpl.hp.com/personal/Hans_Boehm/gc/complexity.html
http://www.hpl.hp.com/personal/Hans_Boehm/gc/conservative.html

And a whole list of other articles here:

http://www.hpl.hp.com/personal/Hans_Boehm/gc/

Lots of interesting material... and a fair bit of it is over my head. But, 
nonetheless, the fundamentals are there.  I'm not sure if some of there studies 
are accurate, biased, or out-dated since I don't keep up with state-of-the-art 
gc research.  But, it seems to me, that Hans is still one of the top experts 
in the field, so some of what's there must be very pertinant.

-JJR





More information about the Digitalmars-d mailing list