Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
附加Java VisualVM进行CPU评测会导致JVMTI错误66_Java_Visualvm_Jvmti - Fatal编程技术网

附加Java VisualVM进行CPU评测会导致JVMTI错误66

附加Java VisualVM进行CPU评测会导致JVMTI错误66,java,visualvm,jvmti,Java,Visualvm,Jvmti,当使用VisualVM对我的应用程序进行cpu评测时,我遇到了错误 “探查器代理错误:消息为:重新定义失败,错误为66” 在此基础上,它将所有类文件从构建路径复制到启动应用程序的位置 我试图找到一些关于它的信息,错误代码意味着(根据JVMTI文档): JVMTI错误\u不支持\u重新定义\u层次结构\u更改(66) 对于新的类版本,直接超类是不同的,或者直接实现的接口集是不同的 因为评测通常在我的环境中工作(Java build 1.7.0_09-b05,Fedora 17 64位)。我已经尝试

当使用VisualVM对我的应用程序进行cpu评测时,我遇到了错误

“探查器代理错误:消息为:重新定义失败,错误为66”

在此基础上,它将所有类文件从构建路径复制到启动应用程序的位置

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

JVMTI错误\u不支持\u重新定义\u层次结构\u更改(66)
对于新的类版本,直接超类是不同的,或者直接实现的接口集是不同的

因为评测通常在我的环境中工作(Java build 1.7.0_09-b05,Fedora 17 64位)。我已经尝试了Visualvm文档中所说的“-Xshare:off”,但没有任何效果

由于这是我遇到此问题的唯一一个JavaSE应用程序,因此它似乎与我正在使用的库有某种关联。我的类路径中有以下内容:

  • Log4j 1.2.17
  • ApacheOpenJPA2.2.1
  • Commons配置1.9
  • 共用池1.6
  • Postgresql 9.1-901jdbc4
  • imgscalr-lib-4.2

有人能看到库和错误之间的关联吗?我真的没有主意了。

看来这可能是由JPA引起的。您可以使用
Sampler
而不是
Profiler
。另一种可能性是定义根方法和插装过滤器,这样由JPA插装的类就不会被VisualVM分析。有关评测以及如何设置评测根和检测筛选器的更多信息,请参阅和。

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


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

JPA实现倾向于执行字节码指令插入(需要支持延迟加载之类的操作)。如果没有太多工作,请尝试切换JPA提供程序?Openjpa嵌套到deep,并且由于(根据我的信息)分离/附加托管实体的独特处理,很遗憾无法切换。感谢您的提示-采样运行没有问题。事实上(真丢脸)我一直认为我在做采样在使用分析选项时所做的事情。注意!不幸的是,JVisualVM没有直接显示JPA实体中的方法调用。根据您想要实现的目标,这可能是问题,也可能不是问题。