What is the difference between the JVM arguments noverify and Xverify:none?
Note: The option -Xverify:none (and its equivalent -noverify) was deprecated in Java 13. Both options might be removed in a future release. OpenJ9 issues a warning if these options are used in Java 13 and later versions.
The options -Xverify:none and -noverify should not be needed and the fix is to remove them from the start configuration. If a software needs them to run, that software is broken and should be fixed. But the warning is entirely unrelated to the UnsatisfiedLinkError that prevents the application from running.
Note: This is not a supported configuration and, as noted, was deprecated from Java 13. If you encounter problems with the verifier turned off, remove this option and try to reproduce the problem. Note: The option -Xverify:none (and its equivalent -noverify) was deprecated in Java 13. Both options might be removed in a future release.
Various sources state that disabling the bytecode verifier is one method of avoiding the VerifyError. Several documents in the internet recommend to disable Java bytecode verification for performance reasons.
They are the same.
-X
represents a non-standard argument. Non-standard arguments only work for certain VMs (hence the name non-standard). noverify
is simply a shortcut for Xverify:none
.
Why have both? I don't think you'll get a real answer unless you asked the developers - it's not documented (as far as I can see). My best guess would be to stay consistent and to lower verbosity.
This is speculation, but reason for noverify
existing could be based on how often developers use -Xverify:true
. If verification is enabled by default, there's not much reason to use -Xverify:true
, thus -Xverify:false
would be the primary reason for using the -Xverify
argument, hence the noverify
shorthand.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With