OQL对象查询语言
2015-12-16 22:40
429 查看
在用mat工具分析内存使用情况查询OutOfMemory原因时,OQL会有很大帮助,所以先在这里总结一下。
基本语法:
select <javascript expression to select>
[from [instanceof] <class name> <identifier>]
[where <javascript boolean expression to filter>]
解释:
(1)class name是java类的完全限定名,如:java.lang.String, java.util.ArrayList, [C是char数组, [Ljava.io.File是java.io.File[]
(2)类的完全限定名不足以唯一的辨识一个类,因为不同的ClassLoader载入的相同的类,它们在jvm中是不同类型的
(3)instanceof表示也查询某一个类的子类,如果不明确instanceof,则只精确查询class name指定的类
(4)from和where子句都是可选的
(5)java域表示:obj.field_name;java数组表示:array[index]
举例:
(1)查询长度大于100的字符串 select s from java.lang.String s where s.count > 100
select * from java.util.concurrent.linkedBlockingQueue t where (t.count.value>0)
(2)查询长度大于256的数组 select a from [I a where a.length > 256
(3)显示匹配某一正则表达式的字符串 select a.value.toString() from java.lang.String s where /java/(s.value.toString())
(4)显示所有文件对象的文件路径 select file.path.value.toString() from java.io.File file
(5)显示所有ClassLoader的类名 select classof(cl).name from instanceof java.lang.ClassLoader cl
(6)通过引用查询对象 select o from instanceof 0xd404d404 o
built-in对象 -- heap
(1)heap.findClass(class name) -- 找到类
select heap.findClass("java.lang.String").superclass
(2)heap.findObject(object id) -- 找到对象
select heap.findObject("0xd404d404")
(3)heap.classes -- 所有类的枚举
select heap.classes
(4)heap.objects -- 所有对象的枚举
select heap.objects("java.lang.String")
(5)heap.finalizables -- 等待垃圾收集的java对象的枚举
(6)heap.livepaths -- 某一对象存活路径
select heaplivepaths(s) from java.lang.String s
(7)heap.roots -- 堆根集的枚举
基本语法:
select <javascript expression to select>
[from [instanceof] <class name> <identifier>]
[where <javascript boolean expression to filter>]
解释:
(1)class name是java类的完全限定名,如:java.lang.String, java.util.ArrayList, [C是char数组, [Ljava.io.File是java.io.File[]
(2)类的完全限定名不足以唯一的辨识一个类,因为不同的ClassLoader载入的相同的类,它们在jvm中是不同类型的
(3)instanceof表示也查询某一个类的子类,如果不明确instanceof,则只精确查询class name指定的类
(4)from和where子句都是可选的
(5)java域表示:obj.field_name;java数组表示:array[index]
举例:
(1)查询长度大于100的字符串 select s from java.lang.String s where s.count > 100
select * from java.util.concurrent.linkedBlockingQueue t where (t.count.value>0)
(2)查询长度大于256的数组 select a from [I a where a.length > 256
(3)显示匹配某一正则表达式的字符串 select a.value.toString() from java.lang.String s where /java/(s.value.toString())
(4)显示所有文件对象的文件路径 select file.path.value.toString() from java.io.File file
(5)显示所有ClassLoader的类名 select classof(cl).name from instanceof java.lang.ClassLoader cl
(6)通过引用查询对象 select o from instanceof 0xd404d404 o
built-in对象 -- heap
(1)heap.findClass(class name) -- 找到类
select heap.findClass("java.lang.String").superclass
(2)heap.findObject(object id) -- 找到对象
select heap.findObject("0xd404d404")
(3)heap.classes -- 所有类的枚举
select heap.classes
(4)heap.objects -- 所有对象的枚举
select heap.objects("java.lang.String")
(5)heap.finalizables -- 等待垃圾收集的java对象的枚举
(6)heap.livepaths -- 某一对象存活路径
select heaplivepaths(s) from java.lang.String s
(7)heap.roots -- 堆根集的枚举
相关文章推荐
- group by 与 partition by的区别
- [置顶] Android Studio导入.so文件
- 分布式图并行计算框架:PowerGraph
- C——提高(2)字符串一级指针、二级指针内存模型
- ARM(三) ISA介绍之Data Processing Instructions(数据运算指令)
- iOS 9 新特性之实现 3D Touch 就是 So easy -- OC版
- 爬爬爬之路:UI(二十) iOS动画 通知
- java文件操作
- Jmeter使用
- 欢迎使用CSDN-markdown编辑器
- 强大的自适应jQuery焦点图特效
- Linux中find命令详解
- Arduino - 串口操作函数与示例代码大全
- UVa-10129 单词
- IO(输入流)
- windows 系统下CMD命令大全
- Dancing links
- 导致SharePoint发生Timeout的几处门槛设置
- Android开发快速入门(环境配置、Android Studio安装)
- 文本框空白按钮不可按