用的是没有指定长度的 LinkedBlockingQueue。
没有指定长度,默认长度是 Integer.MAX_VALUE,可以理解为无界队列了:
所以,在我的认知里面,使用 LinkedBlockingQueue 是可能会导致 OOM 的。
如果想避免这个 OOM 就需要在初始化的时候指定一个合理的值。
“合理的值”,听起来轻描淡写的四个字,但是这个值到底是多少呢,你说的准吗?
基本上说不准。
所以,当我看到 pr 上的 MemorySafeLinkedBlockingQueue 这个名字的时候,我就陷进
去了。
在 LinkedBlockingQueue 前面加上了 MemorySafe 这个限定词。
表示这是一个内存安全的 LinkedBlockingQueue。
于是,我想要研究一下到底是怎么样来实现“安全”的,所以啪的一下就点进去了,很快啊。