随笔分类 -  C#基础

摘要:Assembly.Load //加载程序集,会从GAC、应用程序基目录、私有路径子目录查找 Assembly.LoadFrom //从路径加载,首先会得到程序集,然后内部调用Assembly.Load Assembly.LoadFile //可多次加载一个程序集到AppDomain中,此时CLR不会自动解析任何依... 阅读全文
posted @ 2013-08-22 10:00 中本傻 阅读(295) 评论(0) 推荐(0)
摘要:由于C#源代码经过编译器编译生成的是IL代码,而IL是与CPU无关的机器语言。因此当程序运行于特定的CPU时,首先必须将IL转换成本地CPU指令,这正是JIT(Just-In-Time)编译器的任务、职责。当程序中某个具体的方法首次被调用的时候,JIT主要会执行以下步骤:找到该方法的IL将IL编译成优化过的本地CPU指令并保存到一个动态分配的内存中执行生成的本地指令并返回由于第一次调用会经过编译和优化等步骤,所以会有一定的性能损失。但是以后对该方法的调用会以本地代码的形式全速运行。如果您认为这些性能损失不容忽视,可以使用NGen.exe工具来将应用程序的IL代码编译成本地代码。然后,每当CLR 阅读全文
posted @ 2013-07-21 16:22 中本傻 阅读(306) 评论(0) 推荐(0)
摘要:以前,每个应用程序都在自己的进程地址空间中运行,由于进程之间是无法直接调用的,这可以保证应用程序的相互隔离,可以防止安全漏洞、数据破坏和其他不可预测的行为,确保应用程序的健壮性。但是在windows中创建进程的开销很大(Win32的CreateProcess函数的速度很慢,而且windows系统需要大量内存来虚拟化一个进程的地址空间),并且如果要在进程间相互通信是十分麻烦的。所以,如果将这些应用程序放在一个进程中,但是像进程那样是相互隔离的,互不影响,单独卸载,那么应该可以弥补进程的部分不足。在托管程序中,应用程序域(AppDomain)可以做到这些。应用程序域提供了一个更安全、用途更广的处理 阅读全文
posted @ 2013-06-03 14:16 中本傻 阅读(516) 评论(0) 推荐(0)