Class MemorySafeLinkedBlockingQueue<E>

Type Parameters:
E - 元素类型
All Implemented Interfaces:
Serializable, Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>

public class MemorySafeLinkedBlockingQueue<E> extends CheckedLinkedBlockingQueue<E>
内存安全的LinkedBlockingQueue,可以解决OOM问题。 原理是通过Runtime#freeMemory()获取剩余内存,当剩余内存低于指定的阈值时,不再加入。

此类来自于: MemorySafeLinkedBlockingQueue

Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Constructor Details

    • MemorySafeLinkedBlockingQueue

      public MemorySafeLinkedBlockingQueue(long maxFreeMemory)
      构造
      Parameters:
      maxFreeMemory - 最大剩余内存大小,当实际内存小于这个值时,不再加入元素
    • MemorySafeLinkedBlockingQueue

      public MemorySafeLinkedBlockingQueue(Collection<? extends E> c, long maxFreeMemory)
      构造
      Parameters:
      c - 初始集合
      maxFreeMemory - 最大剩余内存大小,当实际内存小于这个值时,不再加入元素
  • Method Details

    • getMaxFreeMemory

      public long getMaxFreeMemory()
      get the max free memory.
      Returns:
      the max free memory limit
    • setMaxFreeMemory

      public void setMaxFreeMemory(int maxFreeMemory)
      set the max free memory.
      Parameters:
      maxFreeMemory - the max free memory