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