JVM 的 noverify 启动参数

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

校验器执行的检查操作:

  1. 变量要在使用之前进行初始化。

  2. 方法调用与对象应用类型之间要匹配。

  3. 访问私有数据和方法的规则没有被违反。

  4. 对本地变量的访问都在运行时堆栈内。

  5. 运行时堆栈没有溢处。

如果你不希望 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 的话,会得到下面的错误。

JVMJ9VM193W Since Java 13 -Xverify:none and -noverify were deprecated for removal and may not be accepted options in the future.

警告的原因为:你的 JDK 使用了高于 13 的版本,但是你还是使用了-noverify 运行参数。

你需要在 JVM 的运行中取消到上面这个参数。

在加载类时,验证类是否正确需要一些时间。由于类可能以延迟方式加载(不是在 app start 上,而是在第一次使用时),这可能会导致意外的运行时延迟。

实际上,类一般不需要检查。编译器不会发出任何无效的字节码或类构造。进行验证的原因是,该类可能构建在一个系统上,联机托管,并通过不受保护的 internet 传输给您。

在这个路径上,恶意攻击者可能修改字节码并创建编译器可能永远不会创建的内容;可以使 JVM 崩溃或可能绕过安全限制的东西。因此,在使用类之前对其进行验证。如果这是一个本地应用程序,通常不需要再次检查字节码。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 打开终端并进入JVM安装目录 2. 编辑jvm启动参数配置文件,通常为jvm.cfg或者java.cfg文件,可以使用以下命令进行编辑: ``` sudo vi /usr/java/latest/jre/lib/jvm.cfg ``` 3. 设置JVM启动参数,例如: ``` -server -Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:NewSize=128m -XX:MaxNewSize=256m -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled ``` 其中,上述参数的含义如下: -server:启用服务器模式 -Xms:JVM启动时分配的最小内存 -Xmx:JVM最大可用内存 -XX:PermSize:永久代初始大小 -XX:MaxPermSize:永久代最大大小 -XX:NewSize:新生代初始大小 -XX:MaxNewSize:新生代最大大小 -XX:SurvivorRatio:新生代中Eden区与Survivor区的大小比例 -XX:+UseConcMarkSweepGC:使用CMS垃圾回收器 -XX:+DisableExplicitGC:禁止显式调用System.gc() -XX:+UseParNewGC:使用并行垃圾回收器 -XX:+UseCMSInitiatingOccupancyOnly:只有在CMS回收策略下才有效 -XX:CMSInitiatingOccupancyFraction:CMS回收策略下,当堆空间使用率达到该值时,触发GC -XX:+CMSParallelRemarkEnabled:开启并行Remark -XX:+CMSClassUnloadingEnabled:开启类卸载 -XX:+CMSPermGenSweepingEnabled:开启永久代回收 4. 保存并退出配置文件 5. 重新启动JVM使得配置生效,例如: ``` sudo service tomcat restart ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值