在所有情况下,您都必须对观察到的实例保持强烈的引用。当您的createGauge()
方法退出时,所有函数堆栈分配的引用都可以进行垃圾回收。
为此#1
,请atomicInteger
像这样传递您的字段:registry.gauge("my_ai", atomicInteger);
。然后根据需要增加/减少。每当千分尺需要查询时,只要找到参考,便会一直使用。
对于#2
,请传递您的productService
字段和lambda。基本上,每当查询量规时,它将使用提供的对象调用该lambda:registry.gauge("product_gauge", productService, productService -> productService.getProducts().size());
(不保证语法错误。)