5

在使用 VisualVM 对我的应用程序进行 cpu 分析时,我遇到了错误

“Profiler Agent 错误:带有消息:重新定义失败,错误 66”。

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

我试图找到一些关于它的信息,错误代码的意思是(根据JVMTI-documentation):

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
  • 公共配置 1.9
  • 共享池 1.6
  • PostgreSQL 9.1-901jdbc4
  • imgscalr-lib-4.2

任何人都可以看到库和错误之间的相关性吗?我真的没有想法了。

4

2 回答 2

5

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

于 2012-12-28T09:47:14.310 回答
0

一个小补充:在分析使用 OpenJPA 的应用程序时,我收到了相同的错误消息。只要您不关闭应用程序,只需在每个错误对话框中单击“确定”,错误似乎就会消失。

因此,您只需按下按钮即可重置收集的结果并再次运行代码。例如,通过循环运行它并使用new Scanner(System.in).nextLine()或通过 UI 中的按钮单击。

于 2015-04-22T09:00:10.203 回答