簡體   English   中英

Java動態列出已分配的對象

[英]Java dynamically list allocated objects

我正在尋找一種方法來查找JVM中已分配對象的列表。

我不想使用分析器,因為我希望在運行時,代碼本身內部看到這些對象。 我想創建一個程序內部所有對象的圖形以及彼此之間的交互。

你有開始的方式嗎? 我已經搜索了很多反射類和分析器示例,但找不到與我的案例相關的內容。

先感謝您

您可以使用JVMTI實現此目的。 GetLoadedClasses函數是一個很好的切入點

JavaVM *jvm;
jvmtiEnv *jvmti;
jvmtiError err;

env->GetJavaVM(&jvm);
jvm->GetEnv((void **) &jvmti, JVMTI_VERSION_1_2);

jint classCount = 0;
jclass * classes;

// get all classes loaded by jvm
jvmti->GetLoadedClasses(&classCount, &classes);

您還可以遍歷堆 ,從而構建對象圖。

你有開始的方式嗎?

是的,您可以進行堆轉儲並分析堆轉儲。

注意:使用已經存在的堆分析器是最簡單的。 例如visualvm,一個應用程序可以擁有數百萬個對象,因此設計用於執行此操作的工具將幫助您導航數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM