As far as I understand in .NET we have one GC per process and one managed heap per process (it divided to SOH and LOH).
So I have a few question regarding this:
If we have a few Application Domains within a process, then each domain will share the heap between others domains. Is it safe? How this separation between domains performed?
When GC starts working it suspends working threads. So, if one app domain require to start GC very often it will impact on other domains that are not required garbage collection at all. And again, is there any separation for 0,1,2 generations between domains or all objects for 0 generation from different domains stored in the same 0 generation area?
Why was the GC and managed heap implemented per process and not per domain?