Java动态列出分配的对象

标签 java object jvm runtime profiler

我正在寻找一种在 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);

您也可以traverse heap从而构建对象图。

关于Java动态列出分配的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39493625/

相关文章:

java - 在 Java 中使用 SNMP 监控是否会对性能产生影响?

java - ProxySelector 将 URL 的方案从 https ://to socket://更改为

java - 如何在 Apache Spark 中将时区设置为 UTC?

objective-c - ios使用对象返回一个函数并使用它

c++ - 默认初始化数据成员是对象?

java - 如何动态判断Java程序运行时内存使用情况?

java - 为什么java忽略选项 "-XX:ErrorFile=/dev/null"

java - 我应该在这两个类之间使用什么 UML 关系?

JavaFX - 当用户将鼠标从一个节点拖动到另一个节点时通知?

c++ - 自己写c++ "array"类