[英]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.