java - 堆转储中的对象创建时间

标签 java heap-memory

有没有办法从 Java 进程的堆转储中计算出(甚至近似)对象的创建时间?

请假设我无权访问代码并且我必须使用给定的转储。所以我不能把时间戳放在构造函数中。

最佳答案

我认为您无法从给定的转储中找到时间戳,但如果您可以创建新的转储,这里有一些建议。

如果您只需要非常粗略的时间分辨率,例如(启动后、5 分钟后、手动触发错误之前、手动触发错误之后等),那么您可以获取多个转储并进行比较。

否则,如果您能够添加代理并再次运行场景,您可以自行记录。在*$JAVA_HOME/demo/jvmti 目录* 中使用您的 JDK,有一个示例代理程序 heapTracker 可以跟踪对象创建删除。这可以很容易地修改为也包括时间戳。参见 Tools Interface

关于java - 堆转储中的对象创建时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8815489/

相关文章:

java - 我无法导入 AppCompatActivity

java - 自动映射除一个字段之外的所有字段,该字段应通过其他函数传递

java - 如何使用带参数的随机类?

char *p =NULL 占用内存?

android - 如何增加android虚拟设备的最大堆大小?

java - 如何从java堆转储中查找缓存对象

c - 我从堆中分配内存来存储一个字符,但它保存的是一个字符串

java - maven war 插件 : exclude all directories but one

java - 为了在过滤器中获取 hibernate session ,在 applicationContext.xml 中编写什么

symbian - 如何使用 J2ME API 在诺基亚手机的 J2ME 应用程序中触发 Symbian C++ 应用程序?