Sounds like the memory leak is on the browser side? Maybe something is
keeping a javascript reference to the plot? Potentially a Jupyter/IJulia
bug?

On Thu, Nov 19, 2015 at 12:01 PM, Stefan Karpinski <[email protected]>
wrote:

> This should work – if there's a memory leak that's never reclaimed by gc,
> that's a bug.
>
> On Thu, Nov 19, 2015 at 11:55 AM, Andrew Keller <
> [email protected]> wrote:
>
>> Maybe generating a new plot every time is not great practice, on account
>> of the performance hit. That being said, I think it's perfectly legitimate
>> to do what I'm doing for prototyping purposes. I can achieve the frame rate
>> I want and the main example shown on
>> https://github.com/JuliaLang/Interact.jl does the same thing I do,
>> generating a new plot each time.
>>
>> In fact, I'd encourage anyone reading this to just try that example, and
>> repeatedly click between sin and cos. I'm able to make the memory
>> consumption of my browser grow without bound. Surely someone besides myself
>> has noticed this before! I don't think loading another package is a serious
>> solution to the problem I'm describing, although your package certainly
>> looks useful for other purposes.
>>
>> Just to reiterate, this is not a small memory leak; this is like a memory
>> dam breach. I'm happy to help debug this but some assistance would be
>> appreciated.
>>
>>
>> On Thursday, November 19, 2015 at 7:11:55 AM UTC-8, Tom Breloff wrote:
>>>
>>> You're creating a new Gadfly.Plot object every update, which is a bad
>>> idea even if Gadfly's memory management was perfect. Plots.jl gives you the
>>> ability to add to or replace the underlying data like this:
>>>
>>> using Plots
>>> gadfly()
>>> getxy() = (1:10, rand(10))
>>> plt = plot(x, y)
>>>
>>> # overwrite underlying plot data without building a new plot
>>> plt[1] = getxy()
>>>
>>>
>>> You can also use familiar push! and append! calls.
>>>
>>> Let me know if this helps, and please post issues if you find bugs. Of
>>> course the memory issue could be while redisplaying in IJulia, in which
>>> case this method won't help.
>>>
>>> On Thursday, November 19, 2015, Andrew Keller <[email protected]>
>>> wrote:
>>>
>>>> I'd like to use Interact to have a plot that updates frequently in a
>>>> Jupyter notebook, but it seems like there is a large memory leak somewhere
>>>> and I am having some trouble tracking down what package is responsible.
>>>> Within a few minutes of running, the following code will cause the memory
>>>> used by the web browser to balloon to well over 1 GB with no sign of
>>>> slowing down. It is almost like the memory allocated for displaying a
>>>> particular plot is never deallocated:
>>>>
>>>> using Reactive, Interact, Gadfly
>>>>
>>>> @manipulate for
>>>>>     paused=false,
>>>>>     dt = fpswhen(lift(!, paused), 10)
>>>>>     plot(x=collect(1:10),y=rand(10))
>>>>> end
>>>>
>>>>
>>>> I can observe this problem using Julia 0.4.1, together with the most
>>>> recent releases of all relevant packages, in either Safari on OS X or
>>>> Chrome on Windows 10.
>>>>
>>>> Here's hoping someone has an idea of what's going on or advice for how
>>>> to track down this problem. It seems like something that many others should
>>>> be experiencing.
>>>>
>>>> Thanks,
>>>> Andrew
>>>>
>>>
>

Reply via email to