我见过很多应用程序在加载时采用仪器类并以 -javaagent
作为参数,还将 -noverify
放入命令行。
Java 文档说 -noverify
关闭类验证。
但是为什么有人想要关闭验证,即使他们正在检测类?
最佳答案
启动时间,我会说。加载类时验证类是否正确需要一些时间。由于类可能会以惰性方式加载(不是在应用启动时,而是在第一次使用时),这可能会导致意外和不希望的运行时延迟。
其实类一般不需要检查。编译器不会发出任何无效的字节码或类构造。进行验证的原因是该类(class)可能建立在一个系统上,在线托管并通过未 protected 互联网传输给您。在这条路径上,恶意攻击者可能会修改字节码并创建编译器可能永远不会创建的东西;可能会使 JVM 崩溃或可能绕过安全限制的东西。因此,在使用该类之前对其进行验证。如果这是本地应用程序,通常不需要再次检查字节码。
关于java - 启动 java 应用程序时使用 -noverify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/300639/