附加Java VisualVM以进行CPU分析会导致JVMTI错误66

chr*_*str 4 java visualvm jvmti

当使用VisualVM进行应用程序的cpu-profiling时,我遇到了错误

"Profiler代理错误:带消息:重新定义失败,错误66".

在那之后,它将所有类文件从构建路径复制到我从中启动应用程序的位置.

我试图找到一些关于它的信息,错误代码意味着(根据JVMTI文档):

JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED(66)
直接超类对于新类版本是不同的,或者直接实现的接口集是不同的.

由于分析通常适用于我的环境(Java build 1.7.0_09-b05,Fedora 17 64位).我在Visualvm-docs中尝试过"-Xshare:off",没有任何影响.

由于这是我遇到此问题的唯一Java-SE应用程序,它似乎与我正在使用的库有某种关联.以下是我的类路径:

  • Log4j 1.2.17
  • Apache OpenJPA 2.2.1
  • Commons配置1.9
  • Commons Pool 1.6
  • Postgresql 9.1-901jdbc4
  • imgscalr-LIB-4.2

任何人都可以看到库和错误之间的相关性吗?我真的不知道了.

Tom*_*rka 5

看起来这可能是由JPA造成的.你可以用Sampler而不是Profiler.另一种可能性是定义根方法和检测过滤器,以便由VisualVM分析由JPA检测的类.请参阅使用VisualVM进行概要分析,第1部分使用VisualVM进行概要分析,第2部分以获取有关概要分析以及如何设置概要分析根和检测过滤器的更多信息.