On 6/2/20 11:49 PM, David Holmes wrote:
IIUC what you are saying is that MAX_ARRAY_LENGTH is treated as a soft-limit. A request for prefGrowth won't be allowed to exceed it. But if minGrowth takes the length passed it then the code tries to do the allocation that large anyway. If it succeeds we win, and if we get OOME that is what we would have thrown anyway if we rejected the request as too big.

Yes, that's a good, succinct summary.

So my misunderstanding in this was that MAX_ARRAY_LENGTH is not attempting to define the actual VM hard limit, just a large value close to that which is expected to always be valid (actual memory permitting).

Exactly. And sorry for this misunderstanding -- revisiting this I see that the name MAX_ARRAY_LENGTH is quite misleading. Maybe I should have pushed harder to change this when Ivan and I went through this code last year. We had improved some things, I think, but we had already gone through half a dozen rounds of review and I think we were both getting tired. :-)

s'marks

Reply via email to