Memory leaks if an object is saved in a DataFrame and references the DataFrame
#### Code Sample, a copy-pastable example if possible

```python
# Your code here

class MemoryLeakDemoDF:
    """
    Dummy class to demonstrate memory leaks
    """

    def __init__(self, df):
        self.df = df
        # if "self" is saved in a DataFrame, it causes a memory leak
        df.loc[0, 'object'] = self

num = 3
for _ in range(num):
    df = pd.DataFrame()
    MemoryLeakDemoDF(df)

```
#### Problem description

In the example above, the objects of MemoryLeakDemoDF are floating in memory and not removed by garbage collector. A similar example with a dict instead of a DataFrame does not lead to this problem. This behavior can cause massive memory leaks in a program that uses DataFrames that have references to other objects.

#### Expected Output

It is expected that there are no memory leaks in a code example above.

What is the reason for the memory leak in this case? What is the root cause of the garbage collector not being able to remove the objects from memory?

#### Output of ``pd.show_versions()``

<details>

[paste the output of ``pd.show_versions()`` here below this line]

INSTALLED VERSIONS
------------------
commit           : None
python           : 3.7.3.final.0
python-bits      : 64
OS               : Windows
OS-release       : 10
machine          : AMD64
processor        : Intel64 Family 6 Model 60 Stepping 3, GenuineIntel
byteorder        : little
LC_ALL           : None
LANG             : None
LOCALE           : None.None
pandas           : 0.25.3
numpy            : 1.17.3
pytz             : 2019.3
dateutil         : 2.8.1
pip              : 19.3.1
setuptools       : 42.0.2.post20191201
Cython           : 0.29.14
pytest           : 5.3.2
hypothesis       : None
sphinx           : 2.3.0
blosc            : None
feather          : None
xlsxwriter       : 1.2.6
lxml.etree       : None
html5lib         : None
pymysql          : None
psycopg2         : None
jinja2           : 2.10.3
IPython          : 7.10.2
pandas_datareader: None
bs4              : None
bottleneck       : None
fastparquet      : None
gcsfs            : None
lxml.etree       : None
matplotlib       : 3.1.2
numexpr          : None
odfpy            : None
openpyxl         : None
pandas_gbq       : None
pyarrow          : None
pytables         : None
s3fs             : None
scipy            : 1.3.2
sqlalchemy       : None
tables           : None
xarray           : None
xlrd             : 1.2.0
xlwt             : None
xlsxwriter       : 1.2.6

</details>
