On Sat, Apr 27, 2013 at 10:36 AM, Dmitry Azaraev
<
dmitry....@gmail.com> wrote:
>> Boolean values are eternal --- they never die. Small integers (31 bits on
>> ia32 and 32bits on x64) are
>> not even allocated in the heap, they are *values* essentially so weak
>> reachability is undefined for them.
> Thanks. I'm trying allocate non-SMI values too - and got same result, so
> looks, that exists some additional rule. May be exist easy way to detect
> which values can be used as weak headles or no?
As a rule of thumb, you should only turn Objects* and Strings into
Persistent handles. Even then it may be a worthwhile tradeoff to just
take the hit and construct a new object every time rather than caching
it in a Persistent handle. (Caveat emptor: as with all
performance-related advice, don't take it on face value - benchmark
it.)
If you find yourself returning a lot of non-SMI numbers, it may be
worth it to return them in a pre-allocated typed array rather than
directly. We use that trick in node.js to avoid excessive heap
allocations.
* That includes Arrays but if your array contains only numeric values,
you can often use the typed array trick.