2011-11-28 71 views
3

为每个进程分配一个单独的内存。在.net中,该进程可以包含多个应用程序域。如何为每个应用程序域分配内存?他们是否分享过程的共同记忆?在应用程序域之间共享内存

回答

1

没有他们不能访问该存储空间相同的存储和共享对象,当你从一个应用程序域将它们传递到另一个对象应该被整理:

Application Domains

代码在一个应用程序中运行不能直接从另一个应用程序访问代码或资源。公共语言运行库 通过阻止不同应用程序域中对象之间的直接调用来实施此隔离。通过域之间传递的对象是 或者被代理复制或访问。如果该对象被复制,则该对象的呼叫 是本地的。也就是说,调用者和被引用的对象 都在相同的应用程序域中。如果通过代理访问的对象是 ,则对该对象的调用是远程的。在这个 的情况下,调用者和被引用的对象在不同的​​ 应用程序域中。 跨域调用使用与两个进程之间或两台机器之间的调用相同的远程调用 基础结构。 因此,被引用对象的元数据必须为 ,这两个应用程序域都可以使方法调用为 JIT编译正确。如果调用域没有获得 为对象的元数据被调用时,编译可能会失败 与类型的异常32位计算机上System.IO.FileNotFound

+0

,如果可用RAM为4GB, CLR为应用程序分配1.5 GB到2GB。那么这个记忆是如何分享的。每个应用程序域是否会获得2GB? – Raghav55

相关问题