I am sorry in advance - but this post will not contain a code sample.

I was assigned with a task to debug a memory leak in some module. 

In this program I have a management object that holds Data and other Objects. The program uses async methods that updates the managment object from time to time.

I used a Perl module [`Devel::Peek`](http://metacpan.org/module/Devel::Peek) to dump the object, and I was curious about the reference count. 

Since I am using a local variable to print this object - the parent refcount is always 1 as expected. 

My 2nd Level - the real management object refcount is always bigger then 1. 

All other levels are also always 1 as expected. 

Here is an example: 

```none
SV = RV(0xbb3e244) at 0xbb3e238
  REFCNT = 1
  FLAGS = (PADMY,ROK)
  RV = 0xcf19478
  SV = PVHV(0xd0e1f98) at 0xcf19478
    REFCNT = 6
    FLAGS = (PADMY,OBJECT,OOK,SHAREKEYS)
    STASH = 0x9b116a0   "<XXXXX>"
    ARRAY = 0xd0ff190  (0:106, 1:104, 2:34, 3:10, 4:2)
    hash quality = 105.4%
    KEYS = 210
    FILL = 150
    MAX = 255
    RITER = -1
    EITER = 0x0
    Elt "<XXXXX>" HASH = 0x10b5af01
    SV = PVIV(0xce05510) at 0xcf07ba8
      REFCNT = 1
      FLAGS = (IOK,POK,pIOK,pPOK)
      IV = 16200
      PV = 0xd0fc0d8 "16200"\0
      CUR = 5
      LEN = 8
    Elt "<XXXXX>" HASH = 0x3ebbb602
    SV = PV(0xd10c810) at 0xcfb4350
      REFCNT = 1
      FLAGS = (POK,pPOK)
      PV = 0xd2008d8 "<XXX>"\0
      CUR = 4
      LEN = 8
    Elt "<XXXXX>" HASH = 0x1c7c0002
    SV = RV(0xcf197f4) at 0xcf197e8
      REFCNT = 1
      FLAGS = (ROK)
      RV = 0xd456ba0
      SV = PVHV(0xd66a11c) at 0xd456ba0
        REFCNT = 1
        FLAGS = (PADMY,OOK,SHAREKEYS)
        ARRAY = 0xd19a8d8  (0:3, 1:3, 2:2)
        hash quality = 111.4%
        KEYS = 7
        FILL = 5
        MAX = 7
        RITER = -1
        EITER = 0x0
        Elt "<XXXXX>" HASH = 0x2d2f24a1
        SV = RV(0xc2e3fcc) at 0xc2e3fc0
          REFCNT = 1
          FLAGS = (ROK)
          RV = 0xd550548

```

I want to understand the reference count process.

If I understand the management object Ptr is being accessed from several locations. The internal objects are being accessed only once from the management object.

Is it possible that if I update internal fields on the management object from several locations it will cause a memory leak?