Springboot中,我们可以使用监控工具Actuator,查看和变更spring的状态,但是Actuator是有可能引起内存溢出的问题的,具体原因,分析如下:
一、Filter
在Actuator中,有一个过滤器,即MetricsWebFilter,请求监控过滤器,其filter方法如下:
private Publisher<Void> filter(ServerWebExchange exchange, Mono<Void> call) {
long start = System.nanoTime();
return call.doOnSuccess((done) -> success(exchange, start))
.doOnError((cause) -> error(exchange, start, cause));
}
当请求完成后,无论是成功或者是失败,其都会做相应的处理,成功:
private void success(ServerWebExchange exchange, long start) {
Iterable<Tag> tags = this.tagsProvider.http