# How is \`deepcopy\` so clever regarding aliasing and self-reference?

**URL:** https://discourse.julialang.org/t/how-is-deepcopy-so-clever-regarding-aliasing-and-self-reference/113235
**Category:** General Usage
**Tags:** self-reference, deepcopy, serialization, ref
**Created:** [April 19, 2024, 12:44pm UTC](https://discourse.julialang.org/t/how-is-deepcopy-so-clever-regarding-aliasing-and-self-reference/113235 "2024-04-19T12:44:02Z")
**Posts on this page:** 1
**Showing post:** 2

<div class="post-metadata">

### Author: ![Tortar](https://avatars.discourse-cdn.com/v4/letter/t/6bbea6/32.png) [@Tortar](https://discourse.julialang.org/u/Tortar)
#### Post date: [April 19, 2024, 1:01pm UTC](https://discourse.julialang.org/t/how-is-deepcopy-so-clever-regarding-aliasing-and-self-reference/113235/2 "2024-04-19T13:01:27Z")

</div>

I looked at it sometime ago, if I remember correctly the object is explored in a recursive fashion and an IdDict is used to keep track of which objects have already been seen so that to be able to preserve object identities.

Indeed I learnt it by incorrectly assuming that it worked as you thought as well 😃 : see [Possible performance improvements for `deepcopy`?](https://discourse.julialang.org/t/possible-performance-improvements-for-deepcopy/107719)

---

_[View the full topic](https://discourse.julialang.org/t/how-is-deepcopy-so-clever-regarding-aliasing-and-self-reference/113235)._
