Har*_*sha 5 c# garbage-collection
我不是一个科学家.托管资源在堆上分配.但我想知道在哪里分配了非托管资源.如果还在堆上分配了非托管资源,它是否与托管资源使用的堆相同或不同?
提前致谢.
戒
Ser*_*sta 10
从操作系统视图来讲,堆本质上是相同的:分配给OS进程的内存空间.
不同之处在于,当CLR(.net VM)加载到Windows进程中时,它会占用此堆的一部分并将其转换为托管堆.此内存空间成为分配所有受管资源并为垃圾回收器所知的位置.
例如,如果分配了大量非托管内存并且托管堆空间不足,则可能会遇到Out of Memory错误.或者相反.
杰弗里里希特是更好地解释这个东西的人.我强烈建议阅读他的解释:
您可以使用System.InteropServices命名空间(特别是Marshal类)的服务来在堆的非托管部分和托管之间复制数据.
归档时间:
15 年,5 月 前
查看次数:
1439 次
最近记录:
12 年,9 月 前