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)
   
   

Reply via email to