甲骨文本身有它如何工作的一个小片段页面在这里。
基本上,JRE不信任JDK。那是因为它不知道哪个JDK编译器创建了类文件。它将类文件视为恶意文件,直到通过验证。
对此进行扩展,字节码验证是防止Sun称为“恶意编译器”的必要步骤。Sun自己的Java编译器可确保Java源代码不违反安全规则,但是,当应用程序导入代码片段时,它实际上并不
知道 该代码片段是否遵循Java语言规则来确保安全。换句话说,该代码可能不是由可信赖的Java编译器生成的。
在这种情况下,您计算机上的Java运行时系统必须假定该片段是错误的,并对其进行字节码验证。
在经过验证过程之前,Java虚拟机甚至 看不到
字节码。在加载字节码时执行此 *** 作还具有以下优点:不需要在每次执行代码时都执行很多运行时检查。因为已被验证为正确,所以它一旦开始运行,就可以比其他方式更快地运行。
链接图的呈现形式如下:
<<<=== Unsafe / Safe ===>>> +---------------+ +-------------------+| Java source | +--> | Class loader | --++---------------+ | | Bytepre verifier | | || +-------------------+ | V| / |+---------------+ | V| Java compiler | Network / +-------------------++---------------+ | | JVM/JIT | || / +-------------------+ V| |+---------------+ | / V| Java bytepre | --+ +-------------------++---------------+ / | Operating system | +-------------------+ / | V / +-------------------+ | Hardware | / +-------------------+ <<<=== Unsafe / Safe ===>>>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)