objects are not left orphaned. Objects may also be left with active reference counts if the COM "event sink" model is used. Since the object that fires the event needs a reference to the object reacting to the event, the latter's reference count will never reach zero. Reference cycles are typically broken using either out-of-band termination or split identities. In the out-of-band termination technique, an object exposes a method which, when called, forces it to drop its references to other objects, thereby breaking the cycle. In the split identity technique, a single implementation exposes two separate COM objects (also known as identities). This creates a weak reference between the COM objects, preventing a reference cycle. DLL Hell Because in-process COM components are implemented in DLL files and registration only allows for a single version per CLSID, they might in some situations be subject to the "DLL Hell" effect. Registration-free COM capability eliminates this problem for in-process components; registration-free COM is not available for out-of-process servers. See also Portable object (computing) cross language cross platform Object Model definition Distributed Component Object Model (DCOM), extension making COM able to work in networks Common Language Infrastructure current .NET cross language cross platform Object Model Windows Runtime, an application model, evolved version of COM targeting Windows 8 CORBA Common Object Request Broker Architecture, open cross language cross platform object model D-Bus open cross language cross platform Object Model KParts KDE component framework SOM IBM System Object Model, feature-rich alternative to COM XPCOM Mozilla applications cross Platform Component Object Model Enterprise JavaBeans Java Remote Method Invocation Internet Communications Engine Language binding Foreign function interface Calling convention Name mangling Application programming interface - API Application Binary Interface - ABI SWIG opensource automatic interfaces bindings generator from many languages to other languages Notes References External links Component Object Model on MSDN Interview with Tony Williams, Co-Inventor of COM (Video Webcast, August 2006) Info: Difference Between OLE Controls and ActiveX Controls from Microsoft TypeLib Data Format Specification (unofficial) with open source dumper utility. The COM / DCOM Glossary Component-based software engineering Inter-process communication Microsoft application programming interfaces Object models Object request broker Object-oriented programming