ironpython不想要可以卸载吗_IronPython的致命弱点
IronPython到最后还是编译为IL代码被执行了,这其中用到了动态生成程序集的技术。
然而,这个动态生成的程序集是需要在某个AppDomain中被定义的,因此,不可避免的要在AppDomain中加载这个程序集。众所周知,Assembly无法单独地从AppDomain卸载,要卸载某个Assembly,必须将它所在的AppDomain卸载。很遗憾的是,IronPython中动态生成的程序集是在程序主域中定义,也就是说,如果程序不退出,动态生成的Assembly将一直存在,最终导致内存泄漏。
让人无可奈可的是,这不仅仅是IronPython的问题,而且是整个CLR的硬伤(针对微软今后要主推的WPF)。假设要做一个插件体系的软件,按照微软的建议,我们应该在单独的AppDomain中加载插件所需的程序集,在卸载插件的时候卸载掉这个AppDomain。然而,有时候我们需要插件提供一个视图,结果WPF的控件不是从MarshalByRefObject继承而来,也就是说,它们不允许跨域的操作。为此,我们不得不把这些包含视图的程序集加载到主AppDomain中,后果就是持续的Memory Cost。
其实,微软自己也在尝这个苦果,看看.Net 3.5提供的AddIn,里面不得不用一些Adapter来实现WPF控件的跨域操作,然而控件的事件传递无法实现,而且程序经常会Crash。
当然,我们可以说,只要关闭了程序,资源就会被释放了,但恰恰有些项目是有上千个甚至上万个这样需要提供视图的Assembly(考虑一下银行的交易系统),而这些应用程序是跑在24x7无间断运行终端上的,这个问题的影响就相当严重了。
ironpython不想要可以卸载吗_IronPython的致命弱点相关推荐
- ironpython不想要可以卸载吗_使用IronPython给.Net程序
开发的时候,经常被策划频繁变动的方案而苦恼.这时候就想要加入点动态语言来辅助一下. 在考虑用动态语言之前也曾想过使用动态加载dll的方式,实现基础接口来调用.在卸载的时候遇到了问题,虽可以通过应用程序 ...
- 电脑ironpython什么用处能卸载吗_IronPython 的几个问题
跨语言和跨编译器的那些坑(CPython vs IronPython) 代码是宝贵的,世界上最郁闷的事情,便是写好的代码,还要在另外的平台上重写一次,或是同时维护功能相同的两套代码.所以才需要跨平台. ...
- ironpython是python常用的实现方式_IronPython 与C#交互
一.介绍 Python是一种面向对象.直译式计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定.这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几 ...
- 卸载后清理干净_想要清理你的Mac?选这几款软件就对了
用 macOS 一般不太需要关注垃圾清理和杀毒等问题.但是 Mac 在使用一段时间后,同样可能产生一些无用的文件(如缓存.软件卸载残留等).虽然一般不会对系统造成损害,但是无形中也占用了宝贵的硬盘空间 ...
- AutoCAD安装失败怎样卸载重新安装AutoCAD,解决AutoCAD安装失败的方法总结
技术帖:AutoCAD没有按照正确方式卸载,导致AutoCAD安装失败.楼主也查过网上关于如何解决AutoCAD安装失败的一些文章,是说删除几个AutoCAD文件和AutoCAD软件注册表就可以解决A ...
- CAD安装失败怎样卸载重新安装CAD,解决CAD安装失败的方法总结
技术帖:CAD没有按照正确方式卸载,导致CAD安装失败.楼主也查过网上关于如何解决CAD安装失败的一些文章,是说删除几个CAD文件和CAD软件注册表就可以解决CAD安装失败的问题,实际的情况并没有这么 ...
- Ubuntu apt 卸载详解
一.apt-get remove packagename 该命令将移除与packagename相关联的所有二进制文件,但是不会移除与之相关联的配置文件或数据文件(configuration or ...
- MySQL通过安装包提供的卸载功能卸载
你也可以通过安装向导程序进行MySQL8.0服务器程序的卸载. ① 再次双击下载的mysql-installer-community-8.0.26.0.msi文件,打开安装向导.安装向导会自动检测已安 ...
- 【翻译】WF从入门到精通(第六章):加载和卸载实例
上一篇:[翻译]WF从入门到精通(第五章):workflow跟踪 学习完本章,你将掌握: 1.理解工作流实例为什么要卸载和重新加载及其时机 2.理解工作流实例为什么要持久化及其时机 ...
最新文章
- linux 查看锁机时间,3分钟短文|Linux 登陆痕迹查看,last 锁定所有可疑对象
- 加密货币支付卡公司与BCH达成合作
- 他用波士顿动力机器狗拉人力车!网友:这是我见过最蒸汽朋克的事情
- Mac配置Java环境变量等
- Android NDK之静态/动态注册Native方法
- 李宏毅老师ML_HW1——PM2.5预测
- php模板引擎smarty,[PHP]模板引擎Smarty介绍
- BM:我离开EOS的报道被夸大了 期待与社区合作
- java异常处理语句是,java 异常处理
- 2.1 - 递归练习题
- bzoj4498: 魔法的碰撞
- Photoshop插件-删除亮调通道蒙板-脚本开发-PS插件
- 触摸式开关简单入门教程
- 基于IMS的VoLTE业务
- 移动硬盘读不出来的问题
- linux系统性能监控--内存利用率
- 前传(1):Kafka 的前生今世
- 用python实现成绩录入
- 请详细解释下小波去噪的原理
- 东软Unieap平台