Sorry, it's kinda complicated and I'm perhaps not quite using the right terminology ![]()
The IndexWriter looks after all the readers open on an index too, which is why the heap dump shows an IndexWriter retaining 354MB of heap, but if you drill into it one level you see that it's all in its readerPool field: it's really the readers that need to keep track of the old versions of the live docs set that is taking all your memory.
The real-memory circuit breaker looks at the heap usage according to the JVM; the JVM tracks everything but doesn't give you a detailed breakdown by the types of usage. I think this corresponds to this statistic, even in 6.6:
GET /_nodes/stats/jvm?filter_path=nodes.*.jvm.mem.heap_used_in_bytes