问题标签 [oql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - VisualVM v1.4.4 中的 OQL - 获取类的字段名称
我想在 VisualVM (v1.4.4) 中执行 OQL 查询来检索对象的(非静态)字段名称。
OQL 文档描述了heap.findClass(className)
. 这将返回一个包含fields
属性(字段名称数组)的对象。
当我执行以下 OQL...
heap.findClass('java.io.ByteArrayInputStream').fields;
...它返回一个包含 4 个字段对象的数组(ByteArrayInputStream
有 4 个字段- buf
、count
、mark
和pos
- 我假设这些是返回的内容):
如果我随后尝试操作此数组,例如访问每个字段name
和signature
属性(如 OQL 文档中所述),则不会得到任何结果。我什至无法获得数组的长度。例如:
heap.findClass('java.io.ByteArrayInputStream').fields.length;
和:
heap.findClass('java.io.ByteArrayInputStream').fields[0];
以上两个语句都返回<no results>
。
我究竟做错了什么?可能是一些基本的东西。就此而言,我对 JavaScript 或者数据在 VisualVM 中的显示方式不是很熟悉。
javascript - VisualVM 中的 OQL - 从包中递归打印静态数据
我想构建一个 OQL 查询,使用该查询从特定包中的类中递归打印出 JVM 堆转储的所有静态数据。我知道递归遍历内存引用可能存在很多问题,但是(至少在最初)我会通过设置深度阈值来缓解这些问题。
根据文档,类有一个statics
字段,该字段又应由name
s 和s组成value
:
statics - 类的静态字段的名称、值对。
我已经停止使用表达式获取每个静态字段的名称,field.name
并且不知道如何迭代对象的非静态字段。我目前有:
并得到以下输出:
我正在迭代clazz.statics
使用该map()
函数,遵循这个答案。
看起来field
参数只是字段的值,field.name
一如既往null
并且field.state
实际上检索对象之一(com.heap.dump.DataHolder.state
)上的字段。
主要问题:
- 在迭代静态字段时,除了值之外,如何获取字段名称?
- 一旦有了要遍历的对象/实例,如何迭代该对象的非静态字段(名称和值)?这种获取字段值的方法,就像
field.state
语句一样,只有在我已经知道字段名称的情况下才有帮助,这里不是这种情况。
附加问题:
- 如何过滤掉空名称的 AppClassLoader 静态字段?
- 我是否使用了错误的工具来完成这项工作?VisualVM 的 OQL 是否有更简单的替代方案?
java - 使用 MAT 时在 OQL 结果中显示字符串内容
当我在 Eclipse Memory Analyzer 中执行以下 OQL
我得到以下结果
我可以通过右键单击并选择来查看每个结果行的值List Objects -> with outgoing references
,这很不方便。我希望结果是这样的:
假设apple
, peach
, pineapple
,cherry
是每一行的内容。
通过这种方式,我可以通过查看它来知道每一行的值。有什么办法吗?
java - 有没有办法在 mat 中使用 OQL 获取无法访问的对象?
com.google.common.cache.LocalCache$StrongAccessWriteEntry
我可以使用 OQL查询 in mat 的所有实例:
我已经Keep unreachable objects
在垫子上打开了。所以结果包含可到达和不可到达的对象。现在我想获取所有无法访问的com.google.common.cache.LocalCache$StrongAccessWriteEntry instances
(也就是没有 gc 根),如下所示:
我可以使用 OQL 吗?
java - Eclipse MAT OQL 某个包中的类列表
使用 Eclipse MAT 1.9.1 OQL
我想列出某个包中堆转储中的所有类。
我正在尝试查询:
得到:
java.lang.NullPointerException: idx at org.eclipse.mat.parser.internal.oql.compiler.Operation$GreaterThan.evalNull(Operation.java:232) at org.eclipse.mat.parser.internal.oql.compiler.Operation $RelationalOperation.compute(Operation.java:92) at org.eclipse.mat.parser.internal.oql.OQLQueryImpl.accept(OQLQueryImpl.java:1161) at org.eclipse.mat.parser.internal.oql.OQLQueryImpl.accept (OQLQueryImpl.java:1151) 在 org.eclipse.mat.parser.internal.oql.OQLQueryImpl.filterClasses(OQLQueryImpl.java:1133) 在 org.eclipse.mat.parser.internal.oql.OQLQueryImpl.doFromItem(OQLQueryImpl.java :921) 在 org.eclipse.mat.parser.internal.oql.OQLQueryImpl.execute(OQLQueryImpl.java:667) 在 org.eclipse.mat.parser.internal.oql.OQLQueryImpl.internalExecute(OQLQueryImpl.java:690) 在org.eclipse.mat.inspections.OQLQuery.execute(OQLQuery.java:52) 在 org.eclipse.mat.inspections。OQLQuery.execute(OQLQuery.java:1) 在 org.eclipse.mat.query.registry.ArgumentSet.execute(ArgumentSet.java:132) 在 org.eclipse.mat.ui.snapshot.panes.OQLPane$OQLJob.doRun( OQLPane.java:468) 在 org.eclipse.mat.ui.editor.AbstractPaneJob.run(AbstractPaneJob.java:34) 在 org.eclipse.core.internal.jobs.Worker.run(Worker.java:60)
请指教。
gemfire - 通过 GemfireTemplate.query 方法使用 HINT 和 TRACE
我正在尝试使用 GemfireTemplate查询方法将 Trace 添加到文档中提到的 OQL 查询。但是 OQL 验证失败并出现 QueryInvalidException“意外令牌:<”。有任何想法吗?
gemfire - GemFire Select * 带有索引的查询返回不一致的结果
我有一个 GemFire 查询,类似于“ SELECT * FROM /someregion WHERE fieldX IN SET('123')
”。
此查询返回不一致的结果。例如,它将多次返回相同的记录,等等。如果我将查询更改为“ SELECT key FROM /someregion WHERE fieldX IN SET('123')
”,那么我会得到正确的结果。如果我指定列名而不是“*”,我也会得到正确的结果。
有任何想法吗?
mongodb - 如何使 MongoDB 中的 $lookup 与 _id 一起使用?
嗨,当我使用来自 produkt 的 _id 时,我遇到了无法进行查找的问题。我将 produkt id 存储在 kategoria id_produktow 数组中。我想将 kategoria nazwa 和 id_produktow 显示为 produkt nazwa。分类:
产品:
询问:
结果:
为什么没有结果?我试图改变像可乐这样的 nazwa 的身份证号码,它可以工作,但我想要身份证号码。我进行了搜索,但没有任何效果。也许在使用 db.Kategoria.aggregate 时有某种方法可以将 produkt _id 转换为字符串,然后我认为它应该可以工作。
gemfire - GemFire OQL 查询 - 如何在 WHERE 子句中使用 SELECT 语句的计数?
我正在尝试从 /ExampleRegion 查询所有记录的 ID。如果 ID 的计数仅为 1,我想检索记录,因此该 ID 的区域中只有 1 条记录。
SELECT COUNT(*), id from /ExampleRegion group by id --> 仅当该 id 的计数为 1 时。
如何在 WHERE 条件中使用 COUNT 作为条件?
我尝试了以下方法,但它不起作用:
SELECT * from /ExampleRegion a where (SELECT count(*) as c, b.id from /ExampleRegion b where b.id = a.id and c = 1)
SELECT * from /ExampleRegion a where (SELECT count(*) as c from /ExampleRegion b where b.id = a.id ) = 1
我认为 GROUP BY 会起作用,尽管我似乎仍然找不到正确的 OQL。
非常感激。