aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorDavies Liu <davies@databricks.com>2016-06-03 16:45:09 -0700
committerDavies Liu <davies.liu@gmail.com>2016-06-03 16:45:09 -0700
commit3074f575a3c84108fddab3f5f56eb1929a4b2cff (patch)
tree381fdb85dd2b52bc79b0e18c27eded1bd66d622d /common
parent67cc89ff028324ba4a7a7d9c19a268b9afea0031 (diff)
downloadspark-3074f575a3c84108fddab3f5f56eb1929a4b2cff.tar.gz
spark-3074f575a3c84108fddab3f5f56eb1929a4b2cff.tar.bz2
spark-3074f575a3c84108fddab3f5f56eb1929a4b2cff.zip
[SPARK-15391] [SQL] manage the temporary memory of timsort
## What changes were proposed in this pull request? Currently, the memory for temporary buffer used by TimSort is always allocated as on-heap without bookkeeping, it could cause OOM both in on-heap and off-heap mode. This PR will try to manage that by preallocate it together with the pointer array, same with RadixSort. It both works for on-heap and off-heap mode. This PR also change the loadFactor of BytesToBytesMap to 0.5 (it was 0.70), it enables use to radix sort also makes sure that we have enough memory for timsort. ## How was this patch tested? Existing tests. Author: Davies Liu <davies@databricks.com> Closes #13318 from davies/fix_timsort.
Diffstat (limited to 'common')
-rw-r--r--common/unsafe/src/main/java/org/apache/spark/unsafe/memory/MemoryBlock.java2
1 files changed, 1 insertions, 1 deletions
diff --git a/common/unsafe/src/main/java/org/apache/spark/unsafe/memory/MemoryBlock.java b/common/unsafe/src/main/java/org/apache/spark/unsafe/memory/MemoryBlock.java
index e3e7947115..1bc924d424 100644
--- a/common/unsafe/src/main/java/org/apache/spark/unsafe/memory/MemoryBlock.java
+++ b/common/unsafe/src/main/java/org/apache/spark/unsafe/memory/MemoryBlock.java
@@ -51,6 +51,6 @@ public class MemoryBlock extends MemoryLocation {
* Creates a memory block pointing to the memory used by the long array.
*/
public static MemoryBlock fromLongArray(final long[] array) {
- return new MemoryBlock(array, Platform.LONG_ARRAY_OFFSET, array.length * 8);
+ return new MemoryBlock(array, Platform.LONG_ARRAY_OFFSET, array.length * 8L);
}
}