Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 进程内存与AppDomain内存分配_.net_Memory_Clr_Appdomain - Fatal编程技术网

.net 进程内存与AppDomain内存分配

.net 进程内存与AppDomain内存分配,.net,memory,clr,appdomain,.net,Memory,Clr,Appdomain,假设我有.Net应用程序App.exe,它创建了三个域:DomainA、DomainB和DomainC 我们可以说CLR为App.exe进程分配了一些物理内存,然后这些内存在我们的三个域之间按一定比例分配吗 或者,对于每个新域,独立于为App.exe和其他域分配的内存,提供新的单独内存部分 简单地说:我可以把逻辑内存分配想象成一个带有歌曲的(顺序)磁带(其中歌曲是AppDomain),还是一种FAT32,其中文件随机定位,我们只知道它们在磁盘上的位置?CLR管理的整个内存是全局进程的。AppDo

假设我有.Net应用程序App.exe,它创建了三个域:DomainA、DomainB和DomainC

我们可以说CLR为App.exe进程分配了一些物理内存,然后这些内存在我们的三个域之间按一定比例分配吗

或者,对于每个新域,独立于为App.exe和其他域分配的内存,提供新的单独内存部分


简单地说:我可以把逻辑内存分配想象成一个带有歌曲的(顺序)磁带(其中歌曲是AppDomain),还是一种FAT32,其中文件随机定位,我们只知道它们在磁盘上的位置?

CLR管理的整个内存是全局进程的。AppDomains在此不起作用。不管有多少AppDomain,分配总是来自同一个全局堆。堆会根据需要膨胀和收缩。没有静态内存分配

我相信JVM使用静态堆大小分配的原因我不知道。CLR是不同的

我们可以说CLR为App.exe进程分配了一些物理内存吗

不能这么说,Windows上的进程只分配虚拟内存。虚拟内存到物理内存(RAM)的映射严格来说是操作系统的职责。RAM需要由机器上运行的所有进程共享,并且是动态完成的。所有进程的虚拟内存分配的总和通常大大超过RAM的数量。当进程访问虚拟内存时,页面错误会将虚拟内存页面映射到RAM。如有必要,RAM中的数据将被丢弃或存储在分页文件中以腾出空间

AppDomains共享一组GC堆(第0代到第2代以及大型对象堆),它们的分配是混合的。它们由根分开,每个AppDomain都有自己的静态变量堆、自己的GCHandles和自己的带有局部变量的线程堆栈框架集