从JAR记录系统指标

时间:2018-12-03 16:53:31

标签: java jar datadog

假设有一个使用外部jar的应用程序x。

x使用datadog-api记录指标,y也记录。

我想看看是否有可能记录仅针对jar的系统指标。罐子正在使用多少个gc周期?

使用system.gc,我们可以找出整个应用程序在该主机上使用了多少个周期,但是特定的jar呢?

请澄清是否有人知道。

1 个答案:

答案 0 :(得分:1)

组成应用程序的所有类均从同一“内存池”分配内存。尽管JVM可以知道失败的内存分配请求的站点(例如类/方法/行)(并导致GC),但它不知道或不知道类对GC负责。

可能是x分配了eden中99.99%的可用内存,然后y中的一些代码出现了,试图分配一些字节,随后出现了GC。 y真的对GC负责吗?

如果要确定哪些类负责使用大量堆的分配,则需要使用某种类型的探查器来运行代码。首先,您要查找分配最多的类,然后再从中分配这些类的位置。大概可以将分配方法的名称从后面映射到声明该方法的jar中。