RFR: JDK-8266431: Dual-Pivot Quicksort improvements (Radix sort) [v12]
Laurent Bourgès
lbourges at openjdk.java.net
Sun May 15 11:27:53 UTC 2022
On Fri, 13 May 2022 17:48:50 GMT, Piotr Tarsa <duke at openjdk.java.net> wrote:
> allocating extra buffers and catching OOME when sorting primitives is rather unsatisfactory. you're not giving a reliable option for sorting under low memory conditions. IMO at least the single-threaded primitives (ints, longs, floats, etc all non-objects) sorting should be frugal when it comes to memory usage.
>
> just my 2 cents.
DPQS uses several sorting algorithms, merge sort & new radix sort need an extra buffer in contrary to isort, mixed isort, single and dual pivot quick sort.
In this PR an upper limit on the heap usage is in use min(max heap / 16, 128mb) to reduce the memory footprint.
Anyway catching OOME now permits DPQS to use in-place but slower algorithms if the extra buffer can not be allocated.
Possibly the upper limit could be made configurable using system properties if it is really critical.
To sum up, low allocations are now under control in this PR.
-------------
PR: https://git.openjdk.java.net/jdk/pull/3938
More information about the core-libs-dev
mailing list