VisualVM 中的 OQL 语句查询

VisualVM OQL 大约 2048 字

语法

select <JavaScript expression to select>
 [ from [instanceof] <class name> <identifier>
 [ where <JavaScript boolean expression to filter> ] ]

注意

VisualVM中的OQL语法与MAT中的OQL语法不兼容。

selectfrom等关键字必须小写,且结尾不加;封号。

示例代码

package com.example.test;

public class OQLDemo {

    public static Map<String, String> mapVar = new HashMap<>();
    public static List<String> listVar = new ArrayList<>();
    public static String[] arrVar = {"xxx", "yyy", "zzz"};
    public static ThreadPoolExecutor executorVar = new ThreadPoolExecutor(2,
            30,
            100L,
            TimeUnit.SECONDS,
            new LinkedBlockingQueue<>(3),
            Executors.defaultThreadFactory(),
            new ThreadPoolExecutor.CallerRunsPolicy());

    static {
        for (int i = 0; i < 20; i++) {
            mapVar.put("key" + i, "value" + i);
            listVar.add("list" + i);
            int finalI = i;
            executorVar.execute(() -> {
                String s = "this is executor" + finalI;
                new OQLDemo();
                LockSupport.park();
            });
        }
    }

    public String abc = "aaabbbccc";

    public static void main(String[] args) {
        LockSupport.park();

    }

}

查看静态变量

statics表示静态变量

select heap.findClass("com.example.test.OQLDemo").statics.listVar

所有静态变量

select map(heap.findClass("com.example.test.OQLDemo").statics, "index + '=' + toHtml(it)")

查询固定字符串

等于aaabbbccc字符串。·

select s from java.lang.String s where s.toString() == 'aaabbbccc'

查询包含字符串

包含bbb字符串。

select s from java.lang.String s where s.toString().indexOf("bbb") != -1

遍历 Map 对象

select map(filter(heap.findObject("0x85a85cb0"), 'it != null && it.key != null && it.value != null'),
            function (it) {
                var res = it.key.toString() + ' = ' + it.value.toString();
                return res;
            });

更多用法

https://htmlpreview.github.io/?https://raw.githubusercontent.com/visualvm/visualvm.java.net.backup/master/www/oqlhelp.html

阅读 143 · 发布于 2021-08-02

————        END        ————

扫描下方二维码关注公众号和小程序↓↓↓

扫描二维码关注我
昵称:
随便看看 换一批