对于每个进程,分配一个单独的内存。在.net中,该过程可以包含多个应用程序域。如何为每个应用程序域分配内存?他们是否共享过程的共同记忆?
答案 0 :(得分:1)
不允许他们访问相同的内存并共享此内存空间中的对象,当您将对象从一个应用程序域传递到另一个应用程序域时,应该对这些对象进行编组:
在一个应用程序中运行的代码无法直接访问代码或 其他应用程序的资源。公共语言运行库 通过阻止对象之间的直接调用来强制执行此隔离 不同的应用领域。在域之间传递的对象是 由代理复制或访问。如果复制了对象,则调用 对象是本地的。也就是说,调用者和对象都是 引用的是在同一个应用程序域中。如果对象是 通过代理访问,对对象的调用是远程的。在这 case,调用者和被引用的对象是不同的 应用领域。 跨域调用使用相同的远程调用 基础架构作为两个进程之间或两台机器之间的调用。 因此,被引用对象的元数据必须是 两个应用程序域都可用,以允许方法调用 JIT编译正确。如果呼叫域无权访问 要调用的对象的元数据,编译可能会失败 除System.IO.FileNotFound
类型外