作者:不及格的程序员-八神
应用程序域,并不总是给应用程序带来隔离措失.
1 不可靠的CLR同步机制MethodImplOptions.Synchronized
目前众所周知的在写线程同步代码时,不要锁定类型对象以及字符串常量.
2 应用程序域(AppDomain)同样的缺点:[LoaderOptimizationAttribute:LoaderOptimization.MultiDomain]
这个属性被应用应用于进程的入口点方法(void Main),
CLR支持的这种机制(共享列集:marshal-by-bleed,为了节省内存),可以将不同AppDomain中的引用指向内存中同一个CLR对象.
这样的结果就是两个AppDomain域中的代码都可以在这个对象上执行锁定,而导至死锁,应用程序域将不具备应用程序隔离效应之说,而且你不能卸载AppDomain.
这些对象可以是类对象(typeof(myClass)),字符串("abc"),原理同第1点所述.
...
这样的bug,在今后的clr版本中可能仍然存在,要考虑兼容性,如果被修复代价相当高.
南来地,北往的,上班的,下岗的,走过路过不要错过!
======================个性签名=====================
之前认为Apple 的iOS 设计的要比 Android 稳定,我错了吗?
下载的许多客户端程序/游戏程序,经常会Crash,是程序写的不好(内存泄漏?刚启动也会吗?)还是iOS本身的不稳定!!!
如果在Android手机中可以简单联接到ddms,就可以查看系统log,很容易看到程序为什么出错,在iPhone中如何得知呢?试试Organizer吧,分析一下Device logs,也许有用.