Class PooledObjectTracker<T>

java.lang.Object
cloud.opencode.base.pool.tracker.PooledObjectTracker<T>
Type Parameters:
T - the type of object being tracked - 追踪的对象类型

public class PooledObjectTracker<T> extends Object
PooledObjectTracker - Pooled Object Tracker PooledObjectTracker - 池化对象追踪器

Tracks borrowed objects to detect leaks and abandoned objects. Useful for debugging and monitoring pool usage.

追踪借用的对象以检测泄漏和废弃对象。用于调试和监控池使用。

Features | 主要功能:

  • Track borrow/return operations - 追踪借用/归还操作
  • Detect abandoned objects - 检测废弃对象
  • Stack trace capture for debugging - 捕获调用栈用于调试
  • Automatic cleanup of abandoned objects - 自动清理废弃对象

Usage Examples | 使用示例:

PooledObjectTracker<Connection> tracker = new PooledObjectTracker<>(
    Duration.ofMinutes(5),
    true,
    abandoned -> {
        logger.warn("Abandoned connection detected: " + abandoned);
    });

// Track borrow
tracker.trackBorrow(pooledObject);

// Track return
tracker.trackReturn(pooledObject);

// Check for abandoned
List<TrackedObject<Connection>> abandoned = tracker.getAbandonedObjects();

Security | 安全性:

  • Thread-safe: Yes - 线程安全: 是
Since:
JDK 25, opencode-base-pool V1.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Constructor Details

    • PooledObjectTracker

      public PooledObjectTracker()
      Creates a tracker with default settings. 使用默认设置创建追踪器。
    • PooledObjectTracker

      public PooledObjectTracker(Duration abandonedTimeout, boolean captureStackTrace, Consumer<PooledObjectTracker.TrackedObject<T>> abandonedCallback)
      Creates a tracker with custom settings. 使用自定义设置创建追踪器。
      Parameters:
      abandonedTimeout - timeout to consider object abandoned - 认为对象被废弃的超时
      captureStackTrace - whether to capture borrow stack trace - 是否捕获借用调用栈
      abandonedCallback - callback when abandoned object detected - 检测到废弃对象时的回调
  • Method Details

    • trackBorrow

      public void trackBorrow(PooledObject<T> pooledObject)
      Tracks a borrowed object. 追踪借用的对象。
      Parameters:
      pooledObject - the borrowed object - 借用的对象
    • trackReturn

      public void trackReturn(PooledObject<T> pooledObject)
      Tracks a returned object. 追踪归还的对象。
      Parameters:
      pooledObject - the returned object - 归还的对象
    • getTrackedObjects

      public List<PooledObjectTracker.TrackedObject<T>> getTrackedObjects()
      Gets all currently tracked objects. 获取所有当前追踪的对象。
      Returns:
      list of tracked objects - 追踪对象列表
    • getAbandonedObjects

      public List<PooledObjectTracker.TrackedObject<T>> getAbandonedObjects()
      Gets abandoned objects (borrowed longer than timeout). 获取废弃对象(借用超过超时时间)。
      Returns:
      list of abandoned objects - 废弃对象列表
    • checkAndHandleAbandoned

      public int checkAndHandleAbandoned()
      Checks for abandoned objects and invokes callback. 检查废弃对象并调用回调。
      Returns:
      number of abandoned objects found - 发现的废弃对象数量
    • getTrackedCount

      public int getTrackedCount()
      Gets the number of currently tracked objects. 获取当前追踪的对象数量。
      Returns:
      the tracked count - 追踪数量
    • clear

      public void clear()
      Clears all tracked objects. 清除所有追踪对象。