[Haskell-cafe] number of references to a variable

Jan-Willem Maessen jmaessen at alum.mit.edu
Sat Nov 1 13:51:21 EDT 2008


On Nov 1, 2008, at 9:38 AM, Andrew Coppin wrote:

> Alberto G. Corona wrote:
>> Is there a way to know the number of memory references for a  
>> variable?. The runtime must know it but i do not know if this  
>> available for the program trough any low level trick
>
> More precisely, the GC computes it each time it runs. (And only  
> computes it precisely during a "major" pass, not the more frequent  
> "minor" passes.)

Even this isn't quite true for most GC algorithms.  The GC only needs  
to compute whether there is 0 or >= 1 reference to a given location  
(with some special weasel words for stuff with finalizers defined).   
If you can see it, the answer is always >=1, so this information is  
much less useful than you might think!

Usually the clever thing you want to know is "this is the sole  
reference to the pointed-to object".  If that's what you're interested  
in, try looking up "one-bit reference counting", but note that like  
any accurate reference counting technique it's really inefficient in  
practice compared to GC.  [There are efficient reference counting  
techniques, but they defer refcount updates in various subtle ways.   
Also, every ref count technique requires a cycle detector.]

-Jan-Willem Maessen



More information about the Haskell-Cafe mailing list