假设有一个应用程序x,它使用一个外部jar y。
X使用datadog-api来记录指标,y也使用。
我想看看是否可以记录仅特定于jar .i.e的系统指标。jar使用了多少个gc周期?
使用system.gc,我们可以知道整个应用程序在该主机上使用了多少个周期,但是具体的jar呢?
如果有人知道,请澄清。
发布于 2018-12-04 02:41:45
组成应用程序的所有类都从相同的内存池中分配内存。虽然JVM可以知道失败的内存分配请求的站点(例如,类/方法/行)(并导致GC),但它不知道或不知道类“负责”GC的概念。
可能是x分配了伊甸园中99.99%的可用内存,然后y中的一些代码出现,试图分配几个字节,然后就会发生GC。y真的要对GC负责吗?
如果您希望确定哪些类负责使用大量堆的分配,则需要使用某种类型的分析器来运行代码。首先,你想知道哪些类被分配的最多,然后你想知道这些类是从哪里被分配的。大概,您可以将分配方法的名称映射回声明该方法的jar。
https://stackoverflow.com/questions/53598295
复制相似问题