如何将VisualVM OQL结果直接保存到文件中?

jos*_*eph 2 visualvm oql

我的查询结果有数百万行。我已经修改了visualvm.conf

-J-DOQLController.limitResults=1000000
Run Code Online (Sandbox Code Playgroud)

目前,作为解决方法,我运行查询,并将结果复制并粘贴到文件中。然而,结果给我的记忆带来了很大的压力。是否有办法跳过将结果显示到 UI,而直接将结果流式传输到文件?

我的查询如下所示:

select { obj1: busObj.obj1, ... , objN: busObj.objN }
  from com.my.BusinessObject busObj
Run Code Online (Sandbox Code Playgroud)

Tom*_*rka 5

你可以尝试这样的事情:

writeToFile()

function writeToFile() {
    var objects = heap.objects("com.my.BusinessObject", false);
    var FileWriterClass=Java.type("java.io.FileWriter");
    var writer = new FileWriterClass("/tmp/out.txt");

    while (objects.hasMoreElements()) {
        var busObj = objects.nextElement();

        writer.write("obj1: "+busObj.obj1+", obj2: "+busObj.obj2+"\n");
    }
    writer.close();
    return { Result: "done" };
}
Run Code Online (Sandbox Code Playgroud)