On Fri, Sep 4, 2015 at 9:56 AM, Arch Call <[email protected]> wrote:
> I am have difficulty in firguring out why WhyMemoryLeak() leaks memory, and
> NoMemoryLeak() does not!!
> They are both identical except for the line in the for loop.
>
> It is driving me nuts!
>
> I am running Julia 3.11 and Windows 10.  This happens in Juno and in the
> REPL.
>
> Does anyone have any ideas?
>
> Thanks...Archie
>
>
> #------------------------ sample Julia Program
> function WhyMemoryLeak(num_iters::Int64, sleep_time::Float64)
>   for i = 1:num_iters
>     sleep(sleep_time)
>   end
>   return nothing
> end
>
> function NoMemoryLeak(num_iters::Int64, sleep_time::Float64)
>   for i = 1:num_iters
>     sqrt(i) * sleep_time
>   end
>   return nothing
> end
>
> #--------- simulate the actual sleep_ns process computing actual sleep times
> ----------
> sleep_time = .003
> println("-- results for NoMemoryLeak --")
> @time NoMemoryLeak(10, sleep_time)   #-- warm up NoMemoryLeak
> @time NoMemoryLeak(100, sleep_time) #-- run NoMemoryLeak with 100 iters
> @time NoMemoryLeak(1000, sleep_time) #-- run NoMemoryLeak with 1000 iters
>
>
> println("\n-- results for NoMemoryLeak --")
> @time WhyMemoryLeak(10, sleep_time)  #-- warm up WhyMemoryLeak
> @time WhyMemoryLeak(100, sleep_time)  #-- run WhyMemoryLead with 100 iters
> @time WhyMemoryLeak(1000, sleep_time)  #-- run WhyMemoryLead with 100 iters
>
> #---- results of run
>
> -- results for NoMemoryLeak --
>
> elapsed time: 0.004308194 seconds (72968 bytes allocated)
>
> elapsed time: 4.521e-6 seconds (80 bytes allocated)
>
> elapsed time: 4.931e-6 seconds (80 bytes allocated)
>
> -- results for NoMemoryLeak --
>
> elapsed time: 0.048005713 seconds (70748 bytes allocated)
>
> elapsed time: 0.431385715 seconds (39280 bytes allocated)
>
> elapsed time: 4.346366676 seconds (392080 bytes allocated)

Allocation is not memory leak. There are much more work to be done for
sleep because of the task swtiching and therefore very likely many
allocations.

>
>

Reply via email to