OQL查找实施Java.security.principal的实例



这似乎没有返回NetBeans的任何结果(具有与VisualVM相同的堆分析工具):

select x.name from java.security.Principal x

如果我放置了实施原理的具体类的名称,则查询有效,但我需要所有实现。

在Eclipse内存分析仪中尝试了相同的结果。

有任何线索?

HEAP DUMP没有任何类实现特定接口的信息。堆转储中唯一可用的信息是关于超类。Netbeans Profiler可以克服此缺点 - 如果您在堆积或监视Netbeans项目时进行了堆转储,它可以计算从项目中实现特定接口的类。

jhat oql'instanceof'运算符与接口类型bug闭合,因为不会修复,因为当前的堆转储格式没有此类信息。有:

bt2:围绕

工作

手动查找Heap快照中可用的所有实现类(例如,通过JAR搜索文件)。除了找到所有可能的IMP类的困难和不可靠性外,结果不会令人满意,因为您被迫要么

  1. 为每个实现类运行一个单独的OQL查询,因此很难看到所有结果地点。

  1. 使用'来自对象o'并通过检查类型过滤结果,这可能是由于它会穿越堆中的每个物体。

如果您对班级名称或软件包有一些猜测,则可以使用这样的查询来查找适当的候选者:

filter(heap.classes(), "/org\.hibernate\.cfg\.naming/(it.name)")

您可以通过以下方式保存搜索结果:

x = toArray(filter(..., ...))

然后查询详细信息,而无需等待原始查询:

map(x, "{cl: it, sub: it.subclasses(), sup: it.superclasses()}")

相关内容

  • 没有找到相关文章

最新更新