JVisualVM -Xverify:none 无法解决重定义失败,错误 62
Posted
技术标签:
【中文标题】JVisualVM -Xverify:none 无法解决重定义失败,错误 62【英文标题】:JVisualVM -Xverify:none does not solve Redefinition failed with error 62 【发布时间】:2017-06-13 21:30:55 【问题描述】:我正在尝试在 Windows 7 64 位上使用 jvisualvm 分析一个简单的 Java 应用程序。我正在使用带有 JDK 1.8.0_131 的 Java 8。我可以看到我的应用程序并使用 VisualVM 的 Sample 选项卡,但是当我使用 Profile 选项卡的 CPU 选项时,我得到“重新定义失败,错误 62”。此错误在线记录,常见的解决方案是在启动应用程序时包含标志 -Xverify:none。但是,使用此标志对我没有任何影响。我已经用 JVisualVM 本身和我的简单程序 jar 都试过了,两者都没有区别。以下是我正在使用的终端命令。
将 Xverify 与简单程序一起使用。
java -jar SimpleProfile.jar -Xverify:none
将 Xverify 与 jvisualvm 一起使用
./jvisualvm.exe -J-Xverify:none
两者都是从 Git Bash 终端运行的,但没有效果。我也在 CMD 中尝试过类似的命令。
我在我的 PC 上没有管理员权限,并且我注意到我无法使用 Windows 资源监视器。这可能与问题有关还是我的论点有问题?
额外信息: 当探查器失败时,我在终端中收到以下错误
Profiler Agent: Waiting for connection on port 5140 (Protocol
version: 15)
Profiler Agent: Established connection with the tool
Profiler Agent: Local accelerated session
Profiler Agent Error: Redefinition failed for classes:
sun.nio.fs.NativeBuffer$Deallocator
sun.rmi.transport.DGCImpl$1
sun.rmi.transport.tcp.TCPTransport$AcceptLoop
sun.rmi.transport.DGCAckHandler$1
com.profiletest.Main
sun.nio.ch.FileChannelImpl$Unmapper
java.io.DeleteOnExitHook$1
java.util.ResourceBundle$RBClassLoader
java.util.concurrent.ThreadPoolExecutor$Worker
java.util.concurrent.ScheduledThreadPoolExecutor
$ScheduledFutureTask
java.lang.ref.Reference$ReferenceHandler
java.lang.ClassLoader
java.util.logging.LogManager$Cleaner
com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout
java.lang.ApplicationShutdownHooks$1
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler
java.util.concurrent.FutureTask
java.lang.ref.Finalizer$FinalizerThread
java.lang.reflect.Method
Profiler Agent Error: with message: Redefinition failed with
error 62
Check JVMTI documentation for this error code.
Debug: writing class file: sun.nio.fs.NativeBuffer
$Deallocator, into file: sun.nio.fs.NativeBuffer
$Deallocator.class
Debug: writing class file: sun.rmi.transport.DGCImpl$1, into
file: sun.rmi.transport.DGCImpl$1.class
Debug: writing class file:
sun.rmi.transport.tcp.TCPTransport$AcceptLoop, into file:
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.class
Debug: writing class file: sun.rmi.transport.DGCAckHandler$1,
into file: sun.rmi.transport.DGCAckHandler$1.class
Debug: writing class file: com.profiletest.Main, into file:
com.profiletest.Main.class
Debug: writing class file: sun.nio.ch.FileChannelImpl
$Unmapper, into file: sun.nio.ch.FileChannelImpl
$Unmapper.class
Debug: writing class file: java.io.DeleteOnExitHook$1, into
file: java.io.DeleteOnExitHook$1.class
Debug: writing class file: java.util.ResourceBundle
$RBClassLoader, into file: java.util.ResourceBundle
$RBClassLoader.class
Debug: writing class file:
java.util.concurrent.ThreadPoolExecutor$Worker, into file:
java.util.concurrent.ThreadPoolExecutor$Worker.class
Debug: writing class file:
java.util.concurrent.ScheduledThreadPoolExecutor
$ScheduledFutureTask, into file:
java.util.concurrent.ScheduledThreadPoolExecutor
$ScheduledFutureTask.class
Debug: writing class file: java.lang.ref.Reference
$ReferenceHandler, into file: java.lang.ref.Reference
$ReferenceHandler.class
Debug: writing class file: java.lang.ClassLoader, into file:
java.lang.ClassLoader.class
Debug: writing class file: java.util.logging.LogManager
$Cleaner, into file: java.util.logging.LogManager
$Cleaner.class
Debug: writing class file:
com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout,
into file:
com.sun.jmx.remote.internal.ServerCommunicatorAdmin
$Timeout.class
Debug: writing class file:
java.lang.ApplicationShutdownHooks$1, into file:
java.lang.ApplicationShutdownHooks$1.class
Debug: writing class file:
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler, into
file: sun.rmi.transport.tcp.TCPTransport
$ConnectionHandler.class
Debug: writing class file: java.util.concurrent.FutureTask,
into file: java.util.concurrent.FutureTask.class
Debug: writing class file: java.lang.ref.Finalizer
$FinalizerThread, into file: java.lang.ref.Finalizer
$FinalizerThread.class
Debug: writing class file: java.lang.reflect.Method, into
file: java.lang.reflect.Method.class
【问题讨论】:
【参考方案1】:java -Xverify:none -jar SimpleProfile.jar 有效。我想我没有用尽所有选项。
【讨论】:
既然你这么说,那就完全有道理了。-jar jarfile
选项之后的所有内容都作为参数传递给您的 Java 应用程序,因此必须将 JVM 选项放在其之前...
是的,我觉得有点愚蠢,但至少现在其他人可以看到这个更快的解决方案。
在尝试分析单元测试时如何使用 noverify ?以上是关于JVisualVM -Xverify:none 无法解决重定义失败,错误 62的主要内容,如果未能解决你的问题,请参考以下文章