new principle of division between structures and classes
Benji Smith
dlanguage at benjismith.net
Mon Jan 12 21:08:27 PST 2009
Andrei Alexandrescu wrote:
> Benji Smith wrote:
>> Actually, memory allocated in the JVM is very cache-friendly, since
>> two subsequent allocations will always be adjacent to one another in
>> physical memory. And, since the JVM uses a moving GC, long-lived
>> objects move closer and closer together.
>
> Well the problem is that the allocation size grows quickly. Allocate and
> dispose one object per loop -> pages will be quickly eaten.
>
> for (...) {
> JavaClassWithAReallyLongNameAsTheyUsuallyAre o = factory.giveMeOne();
> o.method();
> }
>
> The escape analyzer could catch that the variable doesn't survive the
> pass through the loop, but the call to method makes things rather tricky
> (virtual, source unavailable...). So then we're facing a quickly growing
> allocation block and consequently less cache friendliness and more
> frequent collections.
>
>
> Andrei
Good point. I remember five years ago when people were buzzing about the
possible implementation of escape analysis in the next Java version, and
how it'd move a boatload of intermediate object allocations from the
heap to the stack. Personally, I don't think it'll ever happen. They
can't even agree on how to get *closures* into the language.
I personally think the JVM and the HotSpot compiler are two of the
greatest accomplishments of computer science. But the Java community has
long since jumped the shark, and I don't expect much innovation from
that neighborhood anymore.
--benji
More information about the Digitalmars-d
mailing list