Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
HIVE-12084 changes TopNHash to use Runtime.getRuntime().freeMemory() for finding available memory.
However, it does not give the all the memory it could use, it ignores unallocated memory. This is because the heap size of jvm grows up to max heap size (-Xmx) as per it needs. totalMemory() gives total heap space it has allocated, and freeMemory() is the free memory within that.
See http://i.stack.imgur.com/GjuwM.png and http://stackoverflow.com/questions/3571203/what-is-the-exact-meaning-of-runtime-getruntime-totalmemory-and-freememory .
So instead of using Runtime.getRuntime().freeMemory() , I think it should use maxMemory() - totalMemory() + freeMemory()
Attachments
Attachments
Issue Links
- is related to
-
HIVE-12084 Hive queries with ORDER BY and large LIMIT fails with OutOfMemoryError Java heap space
- Closed