====== 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]]