Thejas M Nair created HIVE-12310: ------------------------------------ Summary: Update memory estimation login in TopNHash Key: HIVE-12310 URL: https://issues.apache.org/jira/browse/HIVE-12310 Project: Hive Issue Type: Bug Components: Query Processor Reporter: Thejas M Nair
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() -- This message was sent by Atlassian JIRA (v6.3.4#6332)