专栏首页技术趋势dump文件通过OQL查询文件信息

dump文件通过OQL查询文件信息

上文:如何实现对java生成的.class加密?

OQL是什么?

OQL 是一种类似 SQL 的查询语言,用于查询 Java 堆。OQL 允许从 Java 堆中过滤/选择所需的信息。虽然 VisualVM 已经支持诸如“显示 X 类的所有实例”之类的预定义查询,但 OQL 增加了更多的灵活性。OQL 基于 JavaScript 表达式语言。 OQL 查询的形式如下: https://htmlpreview.github.io/?https://raw.githubusercontent.com/visualvm/visualvm.java.net.backup/master/www/oqlhelp.html

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

OQL怎么用?

测试代码

/**
 * @author hong
 * @version 1.0
 * @description: oql 测试
 * @date 2022/4/16 10:20
 */
public class OqlTest {
    private static List<Object> lists = new ArrayList<>();
    public static void main(String[] args) throws InterruptedException {
        while (true){
            System.out.println("进来喽!");
            lists.add("123");
            Thread.sleep(1000);
            System.out.println("休息完了!");
        }
    }
}

运行的 配置:-XX:+HeapDumpOnOutOfMemoryError

然后跑起来后启动,然后找到你jdk目录bIn下面的jps,然后获取进程。(注意管理员运行)

然后输入:http://localhost:7000/ 展示如下:

下面通过OQL语句查询,上面哪些可以自行了解。

相关语法查询:http://localhost:7000/oqlhelp/

显示所有类名称:

select classof(cl).name from instanceof java.lang.ClassLoader cl

查找我们创建的OqTest类

通过id查询

点开这个对象

select heap.findObject("0x6d1029358")

点开可以看到我们静态的属性

更多的使用方法,建议还是参考官网或其他现成使用案例;

最后

通过OQL方式来查询dump文件中内存里面的对象或属性,通过该方式可以快速查询,需要将文件下载到本地来进行分析的场景是比较常用,部分JVM分析工具,图形化界面也是通过基于该语法进行集成。不过OQL的学习还是需要了解一些sql基础语法,有sql经验的同学更易上学。

参考文章

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

https://blog.csdn.net/pange1991/article/details/82023771

文章分享自微信公众号:
技术趋势

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者:逍遥壮士
原始发表时间:2022-04-16
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • MAT分析dump文件显示大小比jmap查询结果小

    有朋友向我吐槽,她在一台测试机器上调试,使用jmap查看堆内存占用时,发现年轻代+老年代占用的内存,和dump下堆转储文件使用MAT分析显示的内存不一样,百思不...

    Java架构师必看
  • JAVA通过URL链接获取视频文件信息(无需下载文件)

    最近项目碰到一个大坑:APP上需要在获取视频列表时就获取视频的时长,但早期上传的时候数据库都没有保存这个数据,所以前段时间添加一个时长字段,在上传时手动输入视频...

    ZhangXianSheng
  • JAVA通过URL链接获取视频文件信息(无需下载文件)

    最近项目碰到一个大坑:APP上需要在获取视频列表时就获取视频的时长,但早期上传的时候数据库都没有保存这个数据,所以前段时间添加一个时长字段,在上传时手动输入视频...

    用户6907840
  • WMI技术介绍和应用——查询文件夹信息

            本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。本节只是列出了WQL语句,具体使用参看前面的例子。

    方亮
  • c#通过oledb获取excel文件表结构信息

    发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/120335.html原文链接:https://javaforall.cn

    全栈程序员站长
  • PHP通过文件保存和更新信息的方法分析

    本文实例讲述了PHP通过文件保存和更新信息的方法。分享给大家供大家参考,具体如下:

    砸漏
  • MAT入门到精通(二)

    上一篇文章MAT入门到精通(一)介绍了MAT的使用场景和基本概念,这篇文章开始介绍MAT的基本功能,后面还有两篇,一篇是MAT的高级功能,另一篇是MAT实战案例...

    阿杜
  • MAT入门到精通(二)

    上一篇文章MAT入门到精通(一)介绍了MAT的使用场景和基本概念,这篇文章开始介绍MAT的基本功能,后面还有两篇,一篇是MAT的高级功能,另一篇是MAT实战案例...

    kirito-moe
  • JVM故障分析及性能优化实战(VI)——JVM Heap Dump(堆转储文件)的生成和MAT的使用

    正如Thread Dump文件记录了当时JVM中线程运行的情况一样,Heap Dump记录了JVM中堆内存运行的情况。 可以通过以下几种方式生成Heap Dum...

    IT技术小咖
  • mysql——通过命令将sql查询的结果导出到具体文件

     版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013045437/article/details/812...

    拓荒者
  • heapdump

    通过上一篇 监控和管理生产环境spring boot actuator 我们可以知道可以通过boot集成的actuator插件来监控并管理服务的运行状况,处理由...

    用户7798898
  • JVM-12虚拟机性能监控与故障处理工具之【JDK的可视化工具-VisualVM】

    Visual VM (All-in-One Java Troubleshooting Tool)是目前为止随JDK发布的功能最强大的运行监视和故障处理程序。 V...

    小小工匠
  • java将字符串存入GridF并通过id或文件名查询

    HUC思梦
  • 糟糕,线上OOM了该怎么办,JVM heap dump快速分析

    在故障定位(尤其是out of memory)和性能分析的时候,经常会用到一些文件辅助我们排除代码问题。这些文件记录了JVM运行期间的内存占用、线程执行等情况,...

    架构师修炼
  • 这年头,还有不会OOM排查神器mat的程序员么???

    大家都知道,在存储用户输入的密码时候,会使用一些hash算法对密码进行加工,比如sha-1、bcrypt。这些信息同样不允许在日志输出里出现,必须做脱敏处理。但...

    xjjdog
  • 如何查看JVM运行的堆内存情况

    《不可不知的7个JDK命令》介绍了些jdk自带的问题排查工具,机器出现CPU飙升的情况,此时就可以借助工具,排查应用端是否存在一些潜在问题。

    bisal
  • Android内存优化(五)详解内存分析工具MAT

    前言 在这个系列的前四篇文章中,我分别介绍了DVM、ART、内存泄漏和内存检测工具的相关知识点,这一篇我们通过一个小例子,来学习如何使用内存分析工具MAT。 ...

    用户1269200

扫码关注腾讯云开发者

领取腾讯云代金券