2

我正在对java rmi应用程序进行性能调整,并使用 OQL 执行以下查询:

select tpoint.host.value.toString() from sun.rmi.transport.tcp.TCPEndpoint tpoint
where (tpoint.host!=null && tpoint.csf!=null)

上面的查询在JVisualVM上成功编译,一些记录后跟此错误:-

结果太多。请细化您的查询。

相同的查询无法在Eclipse-MAT中执行。

之后,&& tpoint.csf!=null从 中删除,它在Eclipse-MATabove query中编译得很好。与 JVisualVM 相比,它花费的时间也非常少,并且可以显示所有记录。

我无法找到&& operator在 Eclipse-MAT 中使用的正确语法。

面对很难为Eclipse-MAT找到好的 OQL 参考,好的参考是值得赞赏的。

提前致谢...

4

2 回答 2

2

代替 && 运算符,您可以使用 '' 进行组合查询。好像MAT只支持'and' 'or' 'not',不支持'&&' '||' '^'。

下面是 MAT 中的有效 OQL 查询。

SELECT tpoint.host.value.toString() FROM sun.rmi.transport.tcp.TCPEndpoint tpoint WHERE ((tpoint.host != null) and (tpoint.csf != null))
于 2012-07-19T05:09:29.707 回答
1

MAT-Eclipse OQL 和 JVisualVM OQL 之间存在语法差异。

在撰写此答案时,与 MAT-Eclipse 相比,可以在 JVisualVM OQL (AFAIK) 中编写更复杂的查询。

唯一的缺点是,JViualVM 查询的响应时间非常大,而且响应不包括所有的记录。

如果 MAT 开发人员在帮助内容中提供 MAT OQL 查询(groupby、子查询、字符串操作运算符)的良好文档,那就太好了。

于 2012-06-27T05:28:47.403 回答