If a person were to make a large circular buffer, and fill it up and subsequently empty it, all the objects placed into it have a strong reference, and thus can't be garbage collected, until they're overwritten by new objects which will then have the same problem. To fix this, your get() method should assign the element in the array to null when the object is returned.