jvm 物件查詢語言(OQL)簡介
SELECT子句
SELECT子句用於確定查詢語句需要從堆轉儲快照中選擇什麼內容。如果需要顯示堆轉儲快照中的物件,並且瀏覽這些物件的引用關係,可以使用“*”,這與傳統SQL語句中的習慣是一致的,如:
SELECT * FROM java.lang.String
1.選擇特定的顯示列
查詢也可以選擇特定的需要顯示的欄位,如:
SELECT toString(s),s.count,s.value FROM java.lang.String s
查詢可以用“@”符號來使用Java物件的記憶體屬性訪問器。MAT提供了一系列的內建函式來獲取與分析相關的資訊,如:
SELECT toString(s),s.@usedHeapSize,s.@retainedHeapSize FROM java.lang.String s
關於物件屬性訪問器的具體內容,可以參見下文的“屬性訪問器”。
2.使用列別名
可以使用AS關鍵字來對選擇的列進行命名,如:
SELECT toString(s)AS Value,
s.@usedHeapSize AS"Shallow Size",
s.@retainedHeapSize AS"Retained Size"
FROM java.lang.String s
可以使用“AS RETAINED SET”關鍵字來獲得與選擇物件相關聯的物件集合,如:
SELECT AS RETAINED SET * FROM java.lang.String
3.拼合成為一個物件列表選擇專案
可以使用“OBJECTS”關鍵字把SELECT子句中查詢出來的資料專案轉變為物件,如:
SELECT OBJECTS dominators(s)FROM java.lang.String s
上面例子中,函式“dominators()”將會返回一個物件陣列,因此,如果沒有“OBJECTS”關鍵字,上面的查詢將返回一組二維的物件陣列的列表。通過使用關鍵字“OBJECTS”,我們迫使OQL把查詢結果縮減為一維的物件列表。
4.排除重複物件
使用“DISTINCT”關鍵字可以排除結果集中的重複物件,如:
SELECT DISTINCT classof(s)FROM java.lang.String s
上面的例子中,函式“classof()”的作用是返回物件所屬的Java類,當然,所有字串物件的所屬類都是java.lang.String,因此,如果上面的查詢中沒有加入DISTINCT關鍵字,查詢結果就會返回與快照中的字串數量一樣多的行記錄,並且每行記錄的內容都是java.lang.String型別。
注:本附錄翻譯自Eclipse Memory Analyzer Tool(MAT,Eclipse出品的記憶體分析工具)的OQL幫助文件。
轉載自:深入理解Java虛擬機器:JVM高階特性與最佳實踐(第2版)
相關文章
- oql4j物件查詢語言物件
- OQL(物件查詢語言)在產品實現中造成的RCE(Object Injection)物件Object
- Sentry 監控 - Snuba 資料中臺架構(SnQL 查詢語言簡介)架構
- SQL語言(結構化查詢語言)SQL
- prometheus之查詢語言Prometheus
- Kibana查詢語言(KQL)
- Hive內部函式簡介及查詢語法Hive函式
- MySQL — 資料查詢語言MySql
- 8 語言模型簡介模型
- MySQL入門系列:查詢簡介(五)之子查詢MySql
- 資料庫查詢語言(DQL)資料庫
- SQL語言基礎(子查詢)SQL
- C# LINQ (語言整合查詢)C#
- 簡單的查詢語法
- Go語言工具簡介 - HoneybadgerGo
- 二叉查詢樹(查詢、插入、刪除)——C語言C語言
- 圖查詢語言 nGQL 簡明教程 vol.01 快速入門
- MySQL入門系列:查詢簡介(七)之組合查詢MySql
- SQL語言基礎(高階查詢)SQL
- 靈活的API查詢語言——GraphQLAPI
- MySQL的簡單查詢語句MySql
- groovy 程式語言簡單介紹
- C語言基礎-C簡介C語言
- Go語言學習(1) - 簡介Go
- python之程式語言(簡介)01Python
- Java程式語言特點簡介Java
- MySql中的資料查詢語言(DQL)三:連線查詢MySql
- 關係型資料庫查詢語言 SQL 和圖資料庫查詢語言 nGQL 對比資料庫SQL
- MySQL入門系列:查詢簡介(二)MySql
- AVL樹(查詢、插入、刪除)——C語言C語言
- SQL Server-簡單查詢語句SQLServer
- 一、程式語言簡介與C++C++
- C語言-GCC的簡單介紹C語言GC
- 用JavaScript實現一門程式語言 2 (λanguage語言簡介)JavaScript
- TiDB 查詢優化及調優系列(二)TiDB 查詢計劃簡介TiDB優化
- SQL(Structured Query Language,結構化查詢語言)SQLStruct
- 人工智慧--自然語言處理簡介人工智慧自然語言處理
- 簡單介紹Go 語言單例模式Go單例模式
- JVM 還支援哪些語言JVM