如何解决JVM和CLR如何知道何时插入
| 只是想知道是否有人会向我解释一下JVM,CLR和其他“虚拟机”如何知道何时“踢入”? 我的意思是,您双击可执行文件,您的机器开始执行代码,但是在某些时候-很明显-该代码需要通知机器该代码需要其他过程才能起作用,并且需要传入操作码。那么这是怎么发生的呢?解决方法
每个可执行文件首先运行非托管代码,该代码例如通过到CLR(从mscoree.dll调用_CorExeMain)。然后,CLR(非托管内容)读取/编译/执行程序集中的代码(并执行其他操作)。
, 在.net程序中,可执行文件中有一种引导加载程序,用于启动CLR。该引导加载程序是用本机代码编写的,因此可以直接执行。它后面是托管代码和其他应用程序资源,CLR随后使用它们来执行.net程序。
看一下JVM,它可能会更清楚。您有几个要传递给java.exe的.class文件。这些.class文件包含Java字节码,无法通过双击直接执行。此外,.jar文件只是其中包含.class和其他文件的zip文件。文件扩展名.jar被映射到java.exe,当您双击它时,将以.jar文件作为参数执行java.exe-与双击.doc word文件并启动Word的过程相同。
, 这在某种程度上取决于操作系统。在linux中,您不能仅通过说出Java程序的名称来运行Java程序,通常您会使用java。我没有运行任何CLR二进制文件,但我认为它是相同的。在Windows(对于Jar文件之类的东西)中,Windows具有一个处理程序,其内容类似于“当用户打开以.jar结尾的文件时,运行java \”,以及类似的.net二进制文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。