All!
I found strange code in LinkedBlockingQueue:
private E dequeue() { // assert takeLock.isHeldByCurrentThread(); Node h =
If you look at the jsr166 src then you will find the offending commit, scroll down to v1.51
This shows the answer is in this bug report
The full discussion can be found in a jsr.166 mailing list thread
The "helping GC" bit is about avoiding things bleeding into tenured.