Hi David,
Thanks for the feedback!
On 29/05/2020 00:36, David Holmes wrote:
This seems to be assuming that the GC will clear all SoftReferences when
it needs to clear any SoftReference. I don't think that is at all
guaranteed. In theory your memory eating loop could be satisfied by
clearing only the SoftReference added in the previous iteration of the
loop.
I was wondering about that.
I would have expected the fix here to be simply to clear memory ie:
} catch (OutOfMemoryError oome) {
stop = true;
memory = null;
System.gc();
}
Do you think this would be more reliable?
It was my first thought as well - and that was the
first thing I tested, and it seemed to work as well.
If you think it's a better solution I can revert to that.
My rationale for using SoftReference is that they
then could be cleared any time by the GC, and
possibly avoid unexpected OOME elsewhere in the test
machinery.
best regards,
-- daniel