WEB开发网
开发学院软件开发Java 利用 Memory Dump Diagnostic for Java (MDD4J) 分... 阅读

利用 Memory Dump Diagnostic for Java (MDD4J) 分析内存管理问题

 2009-12-24 00:00:00 来源:WEB开发网   
核心提示: 什么是堆转储?堆转储也称为堆快照,就是内存中对象之间的参照转储,利用 Memory Dump Diagnostic for Java (MDD4J) 分析内存管理问题(2),以及关于这些对象的信息,堆转储不包含变量名、值或源代码等信息,对于缓存实现来说,这一点尤为明显,在执行堆分析之前,需要一个

什么是堆转储?

堆转储也称为堆快照,就是内存中对象之间的参照转储,以及关于这些对象的信息。堆转储不包含变量名、值或源代码等信息。

在执行堆分析之前,需要一个堆转储。有三种方法可生成堆转储:

自动:JVM 通常会在用尽内容和崩溃时生成堆转储。

手动:可以向 JVM 发送一个信号,要求 JVM 生成堆转储。(MDD4J 文档具有关于如何在各种平台上生成堆转储的信息)。

编程:IBM SDK for Java 包含一个 com.ibm.jvm.Dump 类。使用其静态方法可以在您的应用程序运行的过程中生成堆转储。

如何分析堆转储

MDD4J 为堆转储文件使用不同的术语,以其获得的时间为依据:

基准堆转储

尽管 JVM 在崩溃时生成堆转储,但您可以将其与在应用程序启动后获取的堆转储相比较,进一步了解内存是如何使用的。这个在应用程序生命周期的早期获取的堆转储称为基准堆转储,可在执行比较分析时使用。

主堆转储

主堆转储是在问题发生时获取的转储,如用尽内存,或过度的堆占用。此堆转储可在 JVM 用尽内存或崩溃时自动生成。也可通过编程或向 JVM 发送信号来手动生成。可以在主堆转储上执行单一或对比性堆转储分析。

MDD4J 允许执行两种不同类型的堆转储分析,具体取决于可用的堆转储数量:

如其名称所示,单一堆转储分析是对一个堆转储执行的,也就是主堆转储。它为您展示关于堆的所有信息,包括可能造成泄漏的和重要的数据结构。

比较性堆转储分析使用两个堆转储,也就是基准和主堆转储,并比较其差异。

在分析过程中,MDD4J 尝试找到可能性最高的泄漏疑点。之所以称为疑点,是因为没有方法能够准确识别过高的堆占用的原因。分析识别出泄漏疑点,并不表示确实存在泄漏。对于缓存实现来说,这一点尤为明显,因为那与典型的内存泄漏极为相似。

上一页  1 2 3 4 5 6 7  下一页

Tags:利用 Memory Dump

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接