日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java oql_深入理解java虚拟机(八):java内存分析工具-MAT和OQL

發(fā)布時間:2025/3/11 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java oql_深入理解java虚拟机(八):java内存分析工具-MAT和OQL 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

以下內(nèi)容翻譯自MAT幫助文檔。

一、Class Histogram

Class Histogram shows the classes found in the snapshot, the number of objects for each class, the heap memory consumption of these??objects, and the minimum retained size of the objects

二、Dominator tree

Dominator tree shows for a particular object which other objects depend on it and will be garbage collected if that particular?object becomes unreachable.

三、Paths to GC roots

This view find objects responsible for keeping the selected object in the heap.

Componenet report?A heap dump contains many objects. But which of those belong to your component? And what conclusions can you draw from them??This is where the Component Report can help。

四、OQL

OQL is the build-in object query language. Learn to perform custom SQL-like queries on the heap dump in one minute.?classes as tables, objects as rows, and fields as columns。

1、OQL-SELECT

1.SELECT * FROM java.lang.String

2.SELECT toString(s), s.count, s.value FROM java.lang.String s

3.SELECT toString(s) AS Value,s.@usedHeapSize AS “Shallow Size” FROM java.lang.String s

(@為屬性訪問器,可以使用AS起個別名)

4.SELECT AS RETAINED SET * FROM java.lang.String

(使用AS RETAINED SET 獲得與選擇對象相關(guān)聯(lián)的對象集合)

5.SELECT OBJECTS dominators(s) FROM java.lang.String s

(OBJECTS 關(guān)鍵字使得dominators 返回二維數(shù)組簡化為一維對象列表)

6.SELECT DISTINCT OBJECTS classof(s) FROM java.lang.String s

(DISTINCT 去重復)

7、查詢所有的異常對象SELECT * FROM INSTANCEOF java.lang.Exception exceptions

SELECT?exceptions.@displayName, exceptions.detailMessage.toString() FROM INSTANCEOF java.lang.Exception exceptions

2、OQL-FROM

1.SELECT * FROM “java\.lang\..*”

(支持正則)

2.SELECT * FROM java.lang.String

3.SELECT * FROM 0xe14a100

(根據(jù)類對象在堆轉(zhuǎn)儲快照中的地址查詢)

4.SELECT * FROM 3022

(根據(jù)對象在堆轉(zhuǎn)儲快照中的地址ID)

5.SELECT * FROM ( SELECT * FROM java.lang.Class c )

6.SELECT * FROM?${snapshot}.getClasses()(使用屬性訪問器)

7.SELECT * FROM INSTANCEOF java.lang.ref.Reference

(INSTANCEOF會把指定類的子類也查詢出來)

8.SELECT * FROM OBJECTS java.lang.String

(OBJECTS禁止OQL把查詢范圍解釋為對象實例,上述結(jié)果為java.lang.String對應的Class)

3、OQL-WHERE

1.SELECT * FROM java.lang.String s WHERE s.count >= 100

2.SELECT * FROM java.lang.String s WHERE toString(s) LIKE “.*day”

3.SELECT * FROM java.lang.String s WHERE s.value NOT IN dominators(s)

4.SELECT * FROM java.lang.String s WHERE toString(s) = “monday”

5.SELECT * FROM java.lang.String s WHERE s.count > 100 AND?s.@retainedHeapSize?>?s.@usedHeapSize

6.SELECT * FROM java.lang.String s WHERE s.count > 1000 OR?s.value.@length?>1000

7.SELECT * FROM java.lang.String s WHERE (s.count > 1000) = true

WHERE toString(s) = “monday”

WHERE dominators(s).size() = 0

WHERE s.retainedHeapSize > 1024L

WHERE?s.@GCRootInfo?!= null

4、屬性訪問器

1.[.]..……

(訪問堆轉(zhuǎn)儲快照中對象的字段)

2.[.]@……

(訪問java bean屬性)

目標

接口

屬性

含義

任意堆中的對象

Iobject

objectId

快照中對象的ID

objectAddress

快照中對象的地址

Class

對象所屬的類

usedHeapSize

對象的shallowSize

retainedHeapSize

對象的retainedSize

displayName

對象的顯示名稱

類對象

Iclass

classLoaderId

類加載器Id

任意數(shù)組

Iarray

length

數(shù)組的長度

5、OQL 內(nèi)建函數(shù)

.[.]@([,])……

(調(diào)用OQL java方法,加“()”會令MAT解釋為一個OQL java調(diào)用)

常見的OQL java方法

目標

接口

屬性

含義

$snapshot

Isnapshot

getClasses()

獲取所有類的集合

getClassesByName(String name,boolean includeSubClasses)

獲取指定類的集合

Class object

Iclass

hasSuperClass()

如果對象有父類則返回true

isArrayType()

如果Class是數(shù)組類型則返回true

總結(jié)

以上是生活随笔為你收集整理的java oql_深入理解java虚拟机(八):java内存分析工具-MAT和OQL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。