JVM在处理Java程序时有哪些独特的工作机制?

2026-05-15 22:120阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计761个文字,预计阅读时间需要4分钟。

JVM在处理Java程序时有哪些独特的工作机制?

目录 + JDK 13+ 版本的ClassLoader加载Java字节码时,字节码首先接受校验器(verifier)的校验。校验器负责检查那些可能导致无法执行的明显错误指令。校验器执行检查操作。

目录
  • JDK 13 + 版本的问题

当 ClassLoader 加载的 Java 字节码时,字节码首先接受校验器(verifier)的校验。校验器负责检查那些指令无法执行的明显的破坏性的操作。

校验器执行的检查操作:

  • 变量要在使用之前进行初始化。
  • 方法调用与对象应用类型之间要匹配。
  • 访问私有数据和方法的规则没有被违反。
  • 对本地变量的访问都在运行时堆栈内。
  • 运行时堆栈没有溢处。

如果你不希望 JVM 运行这个校验的话,你可以添加noverify参数

JDK 13 + 版本的问题

从 JDK 13 开始及其后续版本中,不建议继续使用-Xverify:none-noverify参数。

否则,你将会得到下面的错误:

warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.

如果你使用的是 OpenJ9 的话,会得到下面的错误。

阅读全文

本文共计761个文字,预计阅读时间需要4分钟。

JVM在处理Java程序时有哪些独特的工作机制?

目录 + JDK 13+ 版本的ClassLoader加载Java字节码时,字节码首先接受校验器(verifier)的校验。校验器负责检查那些可能导致无法执行的明显错误指令。校验器执行检查操作。

目录
  • JDK 13 + 版本的问题

当 ClassLoader 加载的 Java 字节码时,字节码首先接受校验器(verifier)的校验。校验器负责检查那些指令无法执行的明显的破坏性的操作。

校验器执行的检查操作:

  • 变量要在使用之前进行初始化。
  • 方法调用与对象应用类型之间要匹配。
  • 访问私有数据和方法的规则没有被违反。
  • 对本地变量的访问都在运行时堆栈内。
  • 运行时堆栈没有溢处。

如果你不希望 JVM 运行这个校验的话,你可以添加noverify参数

JDK 13 + 版本的问题

从 JDK 13 开始及其后续版本中,不建议继续使用-Xverify:none-noverify参数。

否则,你将会得到下面的错误:

warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.

如果你使用的是 OpenJ9 的话,会得到下面的错误。

阅读全文