Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > reference counting

Reply
Thread Tools

reference counting

 
 
Tony Johansson
Guest
Posts: n/a
 
      08-14-2005
Hello Experts!

I reading a book called programming with design pattern revealed
by Tomasz Muldner and here I read something that I don't understand
completely.

It says
"A garbarage collector, such as the one used in Java, maintains a record of
whether or not
an object is currentlys being used. An unused object is tagged as garbage,
which means
that it can be collected and returned to the pool of available memory. One
simple
technique used to implement a garbage collector is called reference
counting: Multiple objects share a single representation that keeps track of
the number of objects currently in use.
Reference counting is useful in everyday programming; for example, you
can use a string class, in which multiple objects can share the same
representation."

Now to my first question what does it mean with this sentence "Multiple
objects share a single representation that keeps track of the number of
objects currently in use."
Does it mean that many object share another object called X and in this
another object X is a reference counter that count the number of object
reference this object X.

Now to my second question what does it mean with this sentence "you
can use a string class, in which multiple objects can share the same
representation". This second question is the last part of sentence
"Reference counting is useful in everyday programming; for example, you
can use a string class, in which multiple objects can share the same
representation."

Many thanks

//Tony


 
Reply With Quote
 
 
 
 
Pete Becker
Guest
Posts: n/a
 
      08-14-2005
Tony Johansson wrote:

[snipped] <g>

There are several ways to implement reference counting. One way is to
create a wrapper type that holds a pointer to the resource and a pointer
to a memory block that holds the reference count. The copy operations on
objects of this type increment the reference count, and the destructor
decrements the reference count. (That's a bit simplified, but good
enough for now) When the reference count goes to zero the memory block
that holds the reference count gets freed and the resource gets freed.
So as long as there's one or more of these wrapper objects around the
resource still exists. When the last one goes away the resource goes
away, too.

That's not the same as garbage collection. A garbage collector is part
of the memory manager. When the application runs out of memory the
garbage collector paws through the application's data structures,
following pointers to see which heap blocks still have live pointers to
them. Blocks that don't have live pointers are garbage, and available
for recycling.

The difference between the two is twofold. First, with reference
counting, the controlled resource is released as soon as the last
reference to it goes away, with garbage collection the memory for the
controlled resource is released when the garbage collector needs it,
which might never happen. Second, with reference counting you have to
worry about circular data structures. For example, suppose a node holds
a reference-counted pointer to another node, and that second node holds
a reference-counted pointer to the first node. Even if all of the
program's references to these two nodes are gone, their reference counts
are both still one, because each holds a pointer to the other. They'll
never get recycled. With a garbage collector this is no problem. Neither
one is reachable from the program's data, so they both get recycled.

As to that mention of string classes, it's not necessarily true. Some
implementations of the standard string class use reference counting, and
some don't.

--

Pete Becker
Dinkumware, Ltd. (http://www.dinkumware.com)
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Reference counting and API (const reference vs pointer oriented) mathieu C++ 8 08-31-2008 09:05 AM
counting up instead of counting down edwardfredriks Javascript 6 09-07-2005 03:30 PM
reference counting Tony Johansson C++ 4 05-23-2005 01:28 PM
Reference counting in C++ Kalle Rutanen C++ 0 05-07-2005 12:26 PM
flyweight reference counting ash C++ 1 10-24-2003 10:40 AM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57