对象内部的JVisualVM HeapDump OQL呈现数组



我正在尝试编写这样的查询:

select {r: referrers(f), count:count(referrers(f))}
from com.a.b.myClass f

然而,输出并没有显示实际的对象:

{
count = 3.0,
r = [object Object]
}

删除Javascript对象表示法再次正常显示引用,但它们不再被划分。有没有一种方法可以在Object表示法中对其进行格式化?

所以我看到你一年前问过这个问题,所以我不知道你是否还需要答案,但由于我在四处寻找类似的东西,我可以回答这个问题。问题是referrers(f)返回了一个枚举,所以当你试图将其放入哈希图时,它并不能很好地转换。我也在做类似的分析,试图找到唯一的字符数组(计算字符数组的唯一组合,直到前50个字符)。我想到的是:

var counts = {}; 
filter(
  map(
    unique(
      map(
        filter(heap.objects('char[]'), "it.length > 50"), // filter out strings less than 50 chars in length
        function(charArray) {  // chop the string at 50 chars and then count the unique combos
          var subs = charArray.toString().substr(0,50); 
          if (! counts[subs]) {
            counts[subs] = 1;
          } else {
            counts[subs] = counts[subs] + 1;
          }
          return subs;
        }
      ) // map
    ) // unique
  , function(subs) { // map the strings into an array that has the string and the counts of that string 
      return { string: subs, count: counts[subs] };
  }) // map
  , "it.count > 5000"); // filter out strings that have counts < 5000

这基本上展示了如何获取枚举(在这种情况下为heap.objects('char[]'))并对其进行过滤和映射,以便您可以计算其统计信息。希望这能帮助到其他人。

相关内容

  • 没有找到相关文章

最新更新