Q
托管和非托管堆
5
A
回答
10
想象一下,使用P/Invoke调用Win32函数,并使用malloc
分配一些内存。垃圾收集器没有该内存的可见性 - 它是非托管的。
这可能是也可能不是您听过这个术语的上下文,当然 - 如果您可以指出我们的一些例子,我们可以帮助您更多。
6
根据John Skeet-managed
堆是.net将为您管理的那个,所有标准对象都是创建的,您通常不需要打扰太多,因为它是托管的。
unmanaged
意味着你亲自分配内存,因此你个人负责释放它,自己管理它,并跟踪正在使用的内容。
所以是的,对象内存(在正常对象创建和销毁的意义上,从对象派生的东西)被管理。这是你需要担心的其他东西 - 分配给它们的非对象和内存。
0
为了理解.net中的非托管堆,我们需要了解Managed Heap是什么。
在.net框架中,我们有垃圾收集器,它由通用语言程序初始化。在其初始化过程中,垃圾收集器分配一段内存来存储和管理通过托管代码实例化的对象。该内存称为托管堆,反对操作系统中的本地堆。
非托管堆是非托管代码/本机代码在运行时用于分配内存的一个堆。此堆不受垃圾收集器控制,它需要由开发人员处理以释放分配的内存。 Difference between "managed" and "unmanaged"
相关问题
- 1. 托管和非托管C++和Boost
- 2. 托管vs非托管
- 3. DirectX托管或非托管?
- 4. 非托管调用堆栈
- 5. C++托管和非托管静态库
- 6. 非托管内存和托管存储
- 7. 桥接非托管和托管类
- 8. 将非托管/非托管成员添加到托管类
- 9. 堆vs托管堆
- 10. 混合托管/非托管C++?
- 11. 托管代码与非托管代码
- 12. 非托管结构实例在托管
- 13. Gdiplus在C++托管或非托管?
- 14. 托管代码在非托管
- 15. C++托管到非托管转换
- 16. 托管参数托管非托管回调?
- 17. 将非托管转换为托管过程中的托管
- 18. 非托管char *数组托管System ::字符串托管C++
- 19. IIS托管 - >非托管 - >托管 - > StackOverflowException
- 20. 托管堆碎片
- 21. 将非SafeGuard从非托管状态管理到托管状态
- 22. 传递非托管的指针非托管对象在托管类C++/CLI
- 23. 非托管资源和Dispose()
- 24. MEF和非托管代码
- 25. !ClrStack显示非托管调用堆栈
- 26. SBT非托管罐
- 27. 非托管的DLL
- 28. 在C++中托管和非托管类型之间的转换?
- 29. 什么是托管代码和非托管代码?
- 30. 非托管C++ COM和托管C++ .NET4互操作
好,所以在CLR的上下文中,没有非托管堆。所以它只是非托管代码使用的内存,必须专门用于完整的GC ......正确? –
@ user164184,这听起来是正确的,是的。 –
@ user164184:我不会说那里*是*没有非托管堆 - 更多的是我们不需要担心它。 CLR本身无疑会使用非托管数据结构。 –