Can we have multiple instances of CLR on a machine?

Each physical process gets its own copy of the CLR because each is hosted separately. Thus if you create 3 instances of your .NET app you will have 3 copies of the CLR running. Each process will have at least one AppDomain. Where it gets sort of tricky is with domain-neutral assemblies. Domain-neutral assemblies, like some of the system assemblies, are actually shared across AppDomains. This reduces the footprint of the CLR