.net – Windows运行时中的内存管理
发布时间:2020-12-14 05:28:10 所属栏目:Windows 来源:网络整理
导读:正如我在 Windows 8 for .NET中看到的那样,.NET会话处理平台的本机对象.这些对象支持指针计数器.对我来说很清楚,有些托管对象位于托管堆中,而且非托管,我们必须在finalize和dispose方法中释放它们.至于现在,我不清楚如何在Windows运行时处理内存管理.当我不
正如我在
Windows 8 for .NET中看到的那样,.NET会话处理平台的本机对象.这些对象支持指针计数器.对我来说很清楚,有些托管对象位于托管堆中,而且非托管,我们必须在finalize和dispose方法中释放它们.至于现在,我不清楚如何在Windows运行时处理内存管理.当我不得不担心托管/非托管资源时,你能给我一个建议吗?内存管理在Windows运行时如何工作以防止我的应用程序资源泄漏?
UPD: 我的意思是.NET Metro Profile 解决方法
底层的WinRT接口是基于COM的.每个WinRT接口都来自IUnknown,其AddRef和Release方法实现了基于引用计数的内存管理.
但是,当您编写WinRT应用程序然后使用语言投影时,这是非常隐蔽的.对于.NET和Javascript应用程序,语言投影分别内置于CLR和Chakra引擎中.哪个完全隐藏了实现细节,WinRT接口被映射到本机语言结构.包括巧妙地创建COM支持泛型和实现继承的错觉.一个有点合理的猜测是CLR投影使用已经内置在CLR中的COM互操作支持,但是不可能轻松地对其进行逆向工程.如果这完全准确,那么终结器可能会进行IUnknown :: Release()调用. 现在很难得到关于低级细节的正确信息,微软博客和SO海报没有说话,源代码不可用,触及这个问题的问题正在关闭,如this one. 从Chen对这个问题的评论中可以看出,你不应该对此感到好奇.如果您担心,请考虑使用C/C++X进行编程.哪个能很好地隐藏胶水.或者使用WRL库的本地C,但没有.两种运行时环境,其中内存管理是明确的微软投入大量资源使C编程再次相关. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-server-2008 – Windows Web Server 2008 R2 Max R
- windows 升级phpStudy 中MySQL 版本至5.7.17
- 免费的.NET Windows控件库?
- 用批处理抓取Windows版本信息
- windows-server-2003 – 将SQL Server监控与CPU-IO统计相结
- Windows azure,错误为Microsoft.WindowsAzure.Plugins.Cach
- 如何将Windows本机虚拟密钥代码转换为Qt :: Key?
- windows-server-2008 – 在Windows Server上使用内置软件-R
- 修改Windows 10 Universal Applications中每个应用程序的内
- windows – 如何在PowerShell中捕获异常?
推荐文章
站长推荐
热点阅读