如何在MAT Eclipse中的OQL中使用“AND运算符(&&)”

时间:2012-06-26 14:16:48

标签: java heap jvisualvm oql eclipse-mat

我正致力于 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删除above query,它在 Eclipse-MAT 中编译得很好。与JVisualVM相比,它还需要非常短的时间并显示所有记录。

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

面对很难找到 Eclipse-MAT 的良好OQL参考值,我们非常感谢好的参考。

提前致谢...

2 个答案:

答案 0 :(得分:2)

而不是&&运算符,您可以使用“”来执行组合查询。似乎MAT只支持'和''或''不',而不是'&&' '||' '^'。

以下是MAT中正在运行的OQL查询。

SELECT tpoint.host.value.toString() FROM sun.rmi.transport.tcp.TCPEndpoint tpoint WHERE ((tpoint.host != null) and (tpoint.csf != null))

答案 1 :(得分:1)

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

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

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

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