内存分配度量是从收集器所记录的堆跟踪数据计算得出的。在堆跟踪中,对 C 标准库内存分配函数 malloc、realloc 和 memalign 以及释放例程 free 的调用会被收集器截取,调用的数据将记录在实验中。分析器将使对分配函数的调用与对释放内存的 free 的调用相匹配,并计算下表中列出的度量。对 realloc 的调用会被解释为对 free 的调用,随后是对 malloc 的调用。
对于以 JavaTM 编程语言编写的应用程序,堆跟踪数据将记录由用户代码生成的对象分配事件,以及由垃圾收集器生成的对象释放事件。此外,使用 malloc、free 等其中任何一项时也会生成将被记录的事件。这些事件可能来自于本机代码或来自 Java 虚拟机本身。请注意,数据收集进程使用描述内存分配和垃圾收集的 JVMPI 事件,这可能在运行时导致显著膨胀。在大多数基于 Java 技术的应用程序中,存在许多这样的事件,这将导致较大的实验以及处理数据时的可量测性问题。此外,如果请求这些事件,垃圾收集器将禁用一些内联分配,同时花费附加 CPU 时间用于更长的分配路径。
度量 | 定义 |
---|---|
分配数 | 对内存分配函数的调用数目。 |
分配的字节数 | 在对内存分配函数的每一调用中分配的字节数总和。 |
泄漏数 | 对内存分配函数(不具有相应的对 free 的调用)的调用数。 |
泄漏的字节数 | 已分配但未释放的字节数。 |
如果使用过滤按线程、LWP 或抽样选择数据,则所选数据中的分配调用会与对 free 的相应调用相匹配,而不管对 free 的调用是否位于所选数据中。
由于收集器将其自身的函数插入 C 标准库函数上,因此度量归属于收集器库 libcollector.so 中的函数版本。
泄漏和分配的列表在 [泄漏列表] 标签中提供。
另请参见 | |
---|---|
泄漏列表标签 计时度量 硬件计数器度量 线程同步延迟度量 MPI 跟踪度量 互斥、相容和归属度量 设置数据表示首选项 |