A question about reference counting

Discussion in 'C++' started by Tony Johansson, Aug 14, 2005.

  1. 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
     
    Tony Johansson, Aug 14, 2005
    #1
    1. Advertising

  2. Tony Johansson

    Rolf Magnus Guest

    Tony Johansson wrote:

    > 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."


    That's a bit sloppily worded.

    > 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.


    Yes. You have one object that contains the actual data and some number of
    references to it. The object maintains a reference count that contains the
    number of references that refer to that object. When the reference count
    reaches 0, there is no reference to the object anymore, so it can't be used
    anymore (since the references are the only way of accessing the object),
    which means it can be destroyed.

    > 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."


    It means the same thing. You have something like:

    MyString a = "Hello";
    MyString b = a;

    Now there are two MyString objects, but those are only references to the
    actual string data, which is shared between both objects. Instead of
    copying the string data, b just refers to the same data as a, and the
    reference count is incremented when b is created.
     
    Rolf Magnus, Aug 14, 2005
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. ash
    Replies:
    1
    Views:
    442
    SenderX
    Oct 24, 2003
  2. Kalle Rutanen

    Reference counting in C++

    Kalle Rutanen, May 7, 2005, in forum: C++
    Replies:
    0
    Views:
    585
    Kalle Rutanen
    May 7, 2005
  3. Tony Johansson

    reference counting

    Tony Johansson, May 22, 2005, in forum: C++
    Replies:
    4
    Views:
    383
    Andrew Koenig
    May 23, 2005
  4. mathieu
    Replies:
    8
    Views:
    531
    Juha Nieminen
    Aug 31, 2008
  5. edwardfredriks

    counting up instead of counting down

    edwardfredriks, Sep 6, 2005, in forum: Javascript
    Replies:
    6
    Views:
    232
    Dr John Stockton
    Sep 7, 2005
Loading...

Share This Page