It depends on how closely you define &quot;circular references&quot;.<p>Assume you have an algorithm that does make use of circular references. Then, you could replace all pointers by integers. And you could put all referenced data into a large array.<p>That way you would have &quot;broken up&quot; all circular references. However, from another point of view, you could argue that your algorithm still makes use of circular references, they are just expressed differently.<p>(Also, now no garbage collector will help you cleaning up that thing, other than releasing that large array at once. So that&#x27;s not really an improvement.)