Java中static类变量不能直接作计时器,但可配合System.nanoTime()等记录累计耗时、调用次数或滑动窗口数据,适用于粗粒度性能监测,需注意线程安全及生产环境应使用Micrometer等专业工具替代。
Java 中 static 类变量本身不能直接作为计时器,但它可以配合系统时间(如 System.nanoTime() 或 System.currentTimeMillis())来记录和累计耗时,常用于粗粒度的性能监测。关键在于:static 变量提供跨实例、跨方法调用的共享存储能力,适合统计总耗时、调用次数、最大/最小耗时等聚合指标。
定义一个 static long 字段,在方法入口记录开始时间,出口计算差值并累加到 static 变量中:
AtomicLong 或同步块,否则可能丢失更新配合耗时记录,static int 或 AtomicInteger 可记录方法被调用的总次数,进而算出平均耗时:
TOTAL_TIME.get() / CALL_COUNT.get()(需避免除零)若需观察近期性能(如最近 100 次调用的平均耗时),可用 static 数组 + 索引轮转:
立即学习“Java免费学习笔记(深入)”;
% 取模实现循环覆盖ConcurrentLinkedQueue 替代static 变量做性能监测简单轻量,但有明显局限: