自己做网站怎么上传到网上,中国新闻社是央企吗,建e网六面图合成顺序,网站推广排名优化中午的时候#xff0c;有一个小伙伴问我#xff0c;CLR到底是进程还是线程#xff0c;它和自己写的程序是怎么关联的。这一问#xff0c;直接把我问懞了。下面我尝试用简单的语言来描述这个问题#xff0c;有的地方无法讲的太细#xff08;不然内容会太多#xff09;有一个小伙伴问我CLR到底是进程还是线程它和自己写的程序是怎么关联的。这一问直接把我问懞了。下面我尝试用简单的语言来描述这个问题有的地方无法讲的太细不然内容会太多大家还是带着辩证的眼光来看。假如现在有这样一个程序如下代码很简单就不解释了。这个程序编译生成的exe里面并不是二进制代码而是中间语言ILIL是不能直接被机器执行的所以需要CLR将IL代码翻译成可执行的机器代码具体是由JIT解释器翻译。如下图重点来了当我们双击exe执行这个程序时操作系统会创建进程这里首先会加载CLR简单说是创建CLR虚拟机进程创建完成后虚拟机会从硬盘加载代码文件并解释为机器代码并将其放置内存中虚拟机会在我们的程序代码中查找Main入口并创建主线程并将入口地址交由cpu开始执行。大概情况如下图这里要补充一下CLR会划分程序域AppDomain,相当于在进程中又逻辑上细化了一层。看完.Net的我们再比较下JVM其实和.net类似java编写的代码也是中间语言即.class字节码当执行java命令时也会先创建JVM虚拟机即虚拟机进程然后从硬盘加载代码并编码为机器代码找到main方法并创建主线程执行流程和CLR比较类似只是JVM中没AppDomain概念。大概情况如下图最后总结一下CLR和JVM都是虚拟机执行程序时先创建CLR或JVM虚拟机进程也就是程序的运行环境然后再从硬盘加载并编译我们的程序代码我们的程序其实就是一个线程。你可能会问CLR和JVM虚拟机又是哪来的其实就是来自你系统中装的运行时比如jre。讲的比较粗糙希望对你能有所帮助拜拜~