java - 启动 java 应用程序时使用 -noverify

标签 java command-line-arguments

我见过很多应用程序在加载时采用仪器类并以 -javaagent 作为参数,还将 -noverify 放入命令行。

Java 文档说 -noverify 关闭类验证。

但是为什么有人想要关闭验证,即使他们正在检测类?

最佳答案

启动时间,我会说。加载类时验证类是否正确需要一些时间。由于类可能会以惰性方式加载(不是在应用启动时,而是在第一次使用时),这可能会导致意外和不希望的运行时延迟。

其实类一般不需要检查。编译器不会发出任何无效的字节码或类构造。进行验证的原因是该类(class)可能建立在一个系统上,在线托管并通过未 protected 互联网传输给您。在这条路径上,恶意攻击者可能会修改字节码并创建编译器可能永远不会创建的东西;可能会使 JVM 崩溃或可能绕过安全限制的东西。因此,在使用该类之前对其进行验证。如果这是本地应用程序,通常不需要再次检查字节码。

关于java - 启动 java 应用程序时使用 -noverify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/300639/

相关文章:

node.js - 是否有一个模块相当于 Python 的 argparse for node.js?

在 C 中通过 cmd 输入时无法读取文件名(通过 args[1])

java - JOGL 程序无法编译 - 带有类路径的 javac

java - Hibernate postgresql比较日期

java - Java 8 中是否存在相当于 .NET Timeout.InfiniteTimeSpan 字段的无限 Duration?

java - 加载hdfs分区文件列表

Java - 获取命令行参数,在 main 之外?

java - Spring 启动 : get command line argument within @Bean annotated method

c++ - 当通过 boost::program_options 使用多个源时,使用最后一个而不是第一个存储值

java枚举从字符串名称接收值