假设有一个应用程序x使用外部jar y。
x使用CCD_ 1来记录度量,y也使用。
我想看看是否可以记录只针对jar的系统指标,即jar使用了多少gc循环?
使用system.gc
,我们可以了解整个应用程序在该主机上使用了多少个周期,但具体的jar呢?
请澄清是否有人知道。
组成应用程序的所有类都从同一个内存"池"中分配内存。虽然JVM可以知道失败(并导致GC(的内存分配请求的站点(例如类/方法/行(,但它不知道或不知道类对GC"负责"。
可能是x
已经分配了eden中99.99%的可用内存,然后y
中的一些代码出现,试图分配几个字节,随后发生GC。y
真的对GC负责吗?
如果你想确定哪些类负责使用大量堆的分配,你需要使用某种探查器来运行你的代码。首先你想找到哪些类被分配得最多,然后你想知道这些类是从哪里分配的。据推测,您将能够将分配方法的名称从后面映射到声明该方法的jar。