1. OQL語法
OQL語法如下:
SELECT * FROM [ INSTANCEOF ] <class_name> [ WHERE <filter-expression>]
2. 語法各子句說明
select部分
SELECT toString(x),
x.value,
x.@usedHeapSize,
toHex(x.@objectAddress),
outbounds(x)
FROM java.lang.Integer x
其中
toString
和outbounds
是內置的方法:
toHex(num) | 十六進制顯示數值 |
toString(object) | 顯示對象的字符串表示 |
dominators(object) | 顯示該對象立即支配的所有對象 |
outbounds(object) | 顯示對象引用的所有對象 |
inbounds(object) | 顯示被對象引用的所有對象 |
classof(object) | 顯示對象的java.lang.Class |
dominatorof(object) | 顯示立即支配該對象的對象 |
x.value
表示訪問對象的某個字段。x.@usedHeapSize
表示訪問對象的一些內置屬性,常見屬性如下:
x.@objectId | 對象Id |
x.@objectAddress | 對象地址 |
x.@class | 對象的java.lang.Class表示 |
x.@usedHeapSize | |
x.@retainedHeapSize | |
x.@classLoaderId | 對象類加載器Id,僅當x是java.lang.Class時才有該屬性 |
x.@length | 數組長度,僅當x是數組時才有該屬性 |
完整的列表屬性請參見Eclipse文檔
from部分
from表示查詢的數據源,常見from數據源如下
SELECT * FROM java.lang.Integer | 指定是java.lang.Integer類型的對象 |
SELECT * FROM INSTANCEOF java.util.AbstractCollection | 指定是AbastractionCollection實例的對象 |
SELECT * FROM OBJECTS 0xcafebabe | 以某個特定地址的對象作為數據源 |
SELECT v, v.@length FROM OBJECTS ( SELECT OBJECTS s.value FROM java.lang.String s ) v | 以子查詢結果作為數據源 |
where部分
where用于數據過濾,它支持如下符號:
>=, <=, >, <, [ NOT ] LIKE, [ NOT ] IN, IMPLEMENTS