====== OQL Object Query Language ======
* [[java:visualvm|Java VisualVM]]이나 [[java:memory:mat|Java Memory Analyzer(MAT)]] 등에서 Heap dump에 있는 객체를 가져오는 쿼리 언어.
* OQL은 프로그램마다 다르다. 여기서는 [[java:memory:mat|Java Memory Analyzer(MAT)]]의 OQL을 정리한다.
===== 문자열비교 =====
* 어떤 레퍼런스가 비록 문자열이라도 OQL에서 문자열 비교를 하고자 한다면 ''toString(값)''으로 감싸야한다.
SELECT * FROM Person p WHERE toString(p.name) = "blah.. blah.."
// 혹은
SELECT * FROM Person p WHERE p.name.@toString() = "blah.. blah.."
===== Object Address 를 검색 조건으로 검색 =====
어떤 해시맵의 값(value)의 레퍼런스가 해당 주소인 것으로 검색하고자 한다면, ''.@objectAddress''를 사용하여
// 해시맵 Entry 구현체는 달라질 수 있다.
SELECT * FROM java.util.concurrent.ConcurrentHashMap$HashEntry he
WHERE toHex(he.value.@objectAddress) = "16진수주소값"
===== 참조 =====
* [[http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Ftasks%2Fqueryingheapobjects.html|MAT Querying Heap Objects]]
* [[http://visualvm.java.net/oqlhelp.html|Analyzing a Heap Dump Using Object Query Language (OQL) — Project Kenai]]
* [[https://blogs.oracle.com/sundararajan/entry/querying_java_heap_with_oql|Querying Java heap with OQL (A. Sundararajan's Weblog)]]
* [[http://cseweb.ucsd.edu/classes/wi00/cse132a/oql.htm|O2 Tutorial]]