gpt4 book ai didi

java - 使用 JVMTI 进行线程感知堆分配跟踪

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:54:55 28 4
gpt4 key购买 nike

编写分析我也会实现堆分析的典型任务。具体我想跟踪一下,哪个线程分配了多少数据?使用 JVMTI,我认为 Hook 到事件 VM Object AllocationObject Free 就足够了。遗憾的是,我读到第一个事件未触发是由于对 new 的调用.

我最后的想法是检查事件 MethodExit 是否名称为 <init>从而将此调用声明为对象分配。但是,在此事件中我无法获取对象,因此无法调用 GetObjectSize .

简单地遍历堆,不包含关于哪个对象被哪个线程分配的信息。有谁知道如何实现这个?

最佳答案

快速浏览一下 Hotspot VM (templateTable_x86_64.cpp) 的 _new 实现似乎表明,_new 没有为 JVMTI 提供任何 Hook (即使在看起来很慢的情况下也是如此)。因此,如果您的技巧不起作用,我看不到任何其他可能性 - 但我绝不是 JVMTI 专家。

我假设用一个小补丁编译您自己的 Hotspot VM 对您不是特别有用吗?

关于java - 使用 JVMTI 进行线程感知堆分配跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6365925/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com