# GeoDirection and GeoDistance Memory Leaks: How to Recover the Memory?

Bug introduced in 7.0 and fixed in 9.0.0

The functions GeoDirection and GeoDistance have memory leaks. To see this, run the example functions below and watch as the Physical Memory Available in the Windows Task Manager, Performance tab, monotonically decreases with function execution.

memoryLeakGeoDirection[x_] :=
Block[{},
Do[GeoDirection[{RandomReal[{5, 15}],
RandomReal[{105, 135}]}, {RandomReal[{20, 25}],
RandomReal[{140, 155}]}], {x}]]

memoryLeakGeoDirection[10000]


and

memoryLeakGeoDistance[x_] :=
Block[{},
Do[GeoDistance[{RandomReal[{5, 15}],
RandomReal[{105, 135}]}, {RandomReal[{20, 25}],
RandomReal[{140, 155}]}], {x}]]

memoryLeakGeoDistance[10000]


If one swaps GeoDirection or GeoDistance with any of GeoDestination, GeoPosition or Log, Sin, etc. then no memory loss occurs.

I have coded a large Monte Carlo simulation using GeoDirection and GeoDistance. To run the actual simulation it is necessary to call these functions on the order of 108 to 109 times. I have upgraded the RAM from 16 GB to 32 GB, and upgraded from Windows 7 Home Premium to Windows 7 Professional, all in a failed attempt to stay ahead of the leaking memory. I am using Mathematica 8.0.4.0 64 bit.

I have tried \$HistoryLength = 0 and ClearSystemCache[], without success in recovering the leaking memory.

Do you have any suggestions as to how to recover this lost memory during a running simulation?

-
It is not a memory leak, it is a memoization problem. – FJRA Apr 7 '12 at 0:34
The example functions evaluate GeoDirection and GeoDistance with a different argument through each pass of the Do loop, and the result is not stored. And yet, memory is still lost continuously as the loop executes. However, memory is not lost in repeated execution of GeoDestination, or Log, Sin, etc. Based on this, it does not appear to me to be a meimonization problem. – Jerry B. Apr 7 '12 at 2:09
No, the problem is in the Geo functions, they have the memoization problem. – FJRA Apr 7 '12 at 3:50
I notice the usage with randomreal and this question mathematica.stackexchange.com/questions/3682/… has also memoryleak problems due to randomreal. Would it have the same cause? – Lou Apr 7 '12 at 9:39
The memory loss occurs for GeoDirection and GeoDistance. If one replaces GeoDirection or GeoDistance with GeoDestination, Log, Sin, etc., with all else remaining the same, then there is no memory loss, so the memory loss is not tied to RandomReal. – Jerry B. Apr 7 '12 at 17:26

Wolfram Research has prepared a patch that eliminates this memory leak. I sent a problem demo notebook to support at WRI, and WRI responded with updated versions for two GeoFunctions.mx files. Replacing the installed GeoFunctions.mx files with these updated patch versions eliminates the memory loss.