Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于在堆转储中查询集合的工具_Java_Eclipse - Fatal编程技术网

Java 用于在堆转储中查询集合的工具

Java 用于在堆转储中查询集合的工具,java,eclipse,Java,Eclipse,是否可以查询转储在堆转储中的集合?显然,我可以使用EclipseMat之类的工具浏览该集合,但我非常希望能够实际调用集合对象上的getter。这显然比在ConcurrentHashMap中查找我需要的映射要清楚得多 我想我要寻找的是某种方法来“重新水化”命名集合的转储状态,以便可以使用标准API对其进行操作 是否有人知道任何此类实用程序,或者,如果不知道,是否有人可以提供一些示例代码或指针来说明如何实现这一点?您应该能够使用中的对象查询语言(OQL)查询所有集合或单个集合 您不必调用任意方法,但

是否可以查询转储在堆转储中的集合?显然,我可以使用EclipseMat之类的工具浏览该集合,但我非常希望能够实际调用集合对象上的getter。这显然比在
ConcurrentHashMap
中查找我需要的映射要清楚得多

我想我要寻找的是某种方法来“重新水化”命名集合的转储状态,以便可以使用标准API对其进行操作


是否有人知道任何此类实用程序,或者,如果不知道,是否有人可以提供一些示例代码或指针来说明如何实现这一点?

您应该能够使用中的对象查询语言(OQL)查询所有集合或单个集合

您不必调用任意方法,但可以使用可用函数编写一些复杂的查询

Sundararajan有一些关于这个主题的有趣的博客文章,展示了你能做什么。见和

例如,您可以通过以下查询找到具有密钥测试的
java.util.HashMap
的所有实例:

select s from java.util.HashMap s where contains(s.table, function(it) {
    if (it && it.key && it.key.value && it.key.value.toString() == 'test') {
        return true;
    }
    return false;
})
这应该在
java.util.concurrent.ConcurrentHashMap
中找到相同的键:

select s from java.util.concurrent.ConcurrentHashMap s where contains(s.segments, function(it) {
    if (!it || !it.table) {
        return false;
    }
    var i, e;
    for (i=0; i < it.table.length; i = i + 1) {
        e = it.table[i];
        if (e) {
            return e.key && e.key.value && e.key.value.toString() == 'test';
        }
    }
    return false;
})
从java.util.concurrent.ConcurrentHashMap s中选择s,其中包含(s.segments,function)(it){
如果(!it | |!it.table){
返回false;
}
变量i,e;
对于(i=0;i
谢谢-我真的没有意识到OQL有那么强大。也许当我有时间的时候,我会写一个工具来允许对集合进行“正确”的查询,但是这些OQL查询将实现我现在想要的!