BTrace 文档中提到 BTrace 在空闲时几乎没有开销。这是否意味着 BTrace 仅在满足某些探测并正在处理时才有开销?
此外,当处理 Probe 时,它会占用一些 CPU 来进行处理。但它对 JVM 内存或任何其他可能影响原始 JVM 进程处理的事情有任何影响吗?
最佳答案
BTrace 添加的 CPU 开销如下:
- 实际探测代码
- 在安全模式下,除了获取时间戳之外,您可能产生的开销很小 - 它可能非常缓慢,具体取决于操作系统)
- 当使用不安全模式时,你可以自由地开枪——开销将取决于你在探针处理程序中放置的内容
- JMX 处理,如果适用(使用 @Property 注释属性)
在内存方面 BTrace 尽力避免任何开销。但是,如果您使用聚合、探查器或自定义集合,内存占用量将根据您存储在那里的数据量而增长。
此外,BTrace 对 PermGen 提出了一些额外的要求 - 过于频繁地重新定义类可能会导致 permgen 耗尽。
关于java - BTrace 的开销是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6831224/