Logger日志输出要使用占位符{}

技术文章 4个月前 完美者
1,006 0

标签:使用率   就是   操作   需要   解决   方式   可变   方法   一个   

最近项目做完,对一个接口应该压测的时候,测试人员反馈,并发从1加到10的时候,tps(每秒钟request/事务 数量)会遇到越来慢,并且内存使用率很高。

  看了具体的代码,也就是很简单的crud的操作,确认是有一些代码对数据库的查询有冗余,查询了两次。怀着试试的态度把代码修改成了查询一次。又试了一次,发现问题还是没有解决掉。最终定位到因为这个接口接收的参数中base64的数据,这个方法的第一句就是

 1 logger.info("收到的参数:"+str); 

  因为收到的数据参数比较大,并且打印日志的是使用字符串拼接的方式,这样就会造成创建String对象的时候创建大量的资源。因为String对象是不可变的,所以会消耗大量的堆内存。修改打印日志的方法

 1 logger.info("收到的参数:{}",str); 

可以修改这样的,使用占位符,对于占位符的形式而言,只有在我们需要的时候才会提取字符串,这样就会避免创建string对象的时候消耗大量的资源。

总结:写每行代码都应该深思熟虑,简单的一句日志输出,造成了很大的性能问题,还有tps变慢。得不偿失!!!

Logger日志输出要使用占位符{}

标签:使用率   就是   操作   需要   解决   方式   可变   方法   一个   

原文地址:https://www.cnblogs.com/wuxixin/p/14249029.html

版权声明:完美者 发表于 2021-01-11 10:46:39。
转载请注明:Logger日志输出要使用占位符{} | 完美导航

暂无评论

暂无评论...