首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象内部的JVisualVM HeapDump OQL呈现数组

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

Stack Overflow用户
提问于 2014-08-27 03:01:52
回答 1查看 520关注 0票数 2

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

代码语言:javascript
复制
select {r: referrers(f), count:count(referrers(f))}
from com.a.b.myClass f

但是,输出并不显示实际的对象:

代码语言:javascript
复制
{
count = 3.0,
r = [object Object]
}

删除Javascript对象表示法再次正常显示引用,但它们不再被划分。有没有办法在对象表示法中格式化它?

EN

回答 1

Stack Overflow用户

发布于 2015-09-10 03:57:44

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

代码语言:javascript
复制
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[]’)),并对其进行过滤和映射,以便计算其统计数据。希望这对某些人有帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25513334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档