#.Net基础
源代码运行流程:
- 1.编写源代码
- 2.编译成中间语言—MSIL(每次Build的代码会存储在一个程序集中,程序集分为两种:可执行程序.EXE或者其他可执行的类库.DLL。一般个人写的代码都会在所建工程的根目录中,而.NetFramework所提供的的可重用的全局程序缓存基础类库存在:Win+R,输入assembly)
- 3.执行
1. CLR(加载公共语言运行时)
2. 读取MSIL
3. JIT成机器码(也就是1,0这种东西,再次声明JIT是边执行,边编译的这可以大大提高代码运行效率)
4. CPU执行机器码
##托管语言
.Net Framework是很负责的,本身提供了一种托管机制,程序员在编写程序时,所写的程序相当于交给了它托管。一旦发现基础错误时,会及时报错提醒,大大的提高了程序的健壮性。例如常遇到的数组越界问题都会在运行之前暴露出来。
##垃圾回收机制
同学们都或多或少的知道,垃圾回收是不定时的随机时间进行垃圾回收。今天就给科普一下细节知识:
.Net Framework会自动创建三层垃圾回收帯:
第一层 G0层:使用时间比较短,内存比较小的放在这(回收释放资源频率,极其频繁)
第二层 G1层:在G0层里释放完资源之后,发现使用时间比较长,且内存比较大的就放在这
第三层 G2层:同理,在回收G1时,还是有一些极其频繁且内存大的就放在G2层
注意:除非已经确认必须要手动进行垃圾回收,一般不要主动调用方法:GC.Collect();
进行回收 !!!原因是因为.NET有自己的垃圾回收机制,一但你手动回收,.Net再检查垃圾的容量时发现很少,内部的机制就会因此减少检查垃圾的频率。当系统垃圾比较多时而你手动的位置并没有被触发,就会卡顿,而且每次手动回收都会给CPU带来负担。
未完待续哦~~