单个 window 进程中的 Side by Side CLR 如何处理 GC 和多个 AppDomain?
How Side by Side CLR in a single window process handles GC and multiple AppDomain?
我试图了解何时将多个 CLR 加载到单个 window 进程中。
是否将每个 AppDomain 映射到特定的 CLR。那么从一个 AppDomain 移动到另一个 AppDomain 的线程如何理解不同的运行时?
一个window进程会有一次GC?或者为加载到进程中的每个 CLR 单独 GC ?
帮助我理解。谢谢
加载到进程中的 CLR 彼此不知道。就每个 运行 时间而言,其他只是使用自己的非托管内存的本机代码。这意味着一个对象不能从 运行 时间传递到另一个对象,相反它必须通过相同的 pinning/marshaling 要求才能与本机代码进行互操作。
如果 CLRv2 中的方法调用 CLRv4 中的方法,它们将看到同一个本机线程,但有自己的 'managed thread' 视图。 CLRv2 会简单地认为它正在调用本地方法,而 CLRv4 会认为它是从本地代码调用的。
我试图了解何时将多个 CLR 加载到单个 window 进程中。
是否将每个 AppDomain 映射到特定的 CLR。那么从一个 AppDomain 移动到另一个 AppDomain 的线程如何理解不同的运行时?
一个window进程会有一次GC?或者为加载到进程中的每个 CLR 单独 GC ?
帮助我理解。谢谢
加载到进程中的 CLR 彼此不知道。就每个 运行 时间而言,其他只是使用自己的非托管内存的本机代码。这意味着一个对象不能从 运行 时间传递到另一个对象,相反它必须通过相同的 pinning/marshaling 要求才能与本机代码进行互操作。
如果 CLRv2 中的方法调用 CLRv4 中的方法,它们将看到同一个本机线程,但有自己的 'managed thread' 视图。 CLRv2 会简单地认为它正在调用本地方法,而 CLRv4 会认为它是从本地代码调用的。