这似乎不会从Netbeans (它具有与VisualVM相同的堆分析工具)返回任何结果:
select x.name from java.security.Principal x如果我输入一个实现了Principal的具体类的名称,那么这个查询就可以工作了,但是我需要所有的实现。
在Eclipse Memory Analyzer中尝试相同的方法,得到相同的结果。
有什么线索吗?
发布于 2014-02-13 20:53:36
堆转储不包含实现特定接口的类的信息。堆转储中唯一可用的信息是关于超类的。NetBeans分析器可以克服这一缺点-如果您在分析或监控NetBeans项目时进行堆转储,它可以计算实现项目特定接口的类。
发布于 2015-12-25 03:35:12
JHAT OQL 'instanceof' operator does not work with interface types错误已关闭,因为不会修复,因为当前的堆转储格式没有此类信息。这里有:
bt2:解决方法
手动查找堆快照中所有可用的实现类(例如,通过搜索JAR文件)。除了查找所有可能的impl类的困难和不可靠之外,结果将不会非常令人满意,因为您必须
或
如果您对类名或包有一些猜测,您可以使用如下查询来查找合适的候选者:
filter(heap.classes(), "/org\\.hibernate\\.cfg\\.naming/(it.name)")您可以通过以下方式保存搜索结果:
x = toArray(filter(..., ...))然后查询明细信息,无需等待原始查询:
map(x, "{cl: it, sub: it.subclasses(), sup: it.superclasses()}")https://stackoverflow.com/questions/21459087
复制相似问题