Re: [MBS] HTMLViewer.EvaluateJavaScriptMBS memory Leak?
On Feb 4, 2012, at 2:38 PM, Michael Diehr wrote: > [...] > Timer1.action > dim s as string = htmlviewer1.EvaluateJavaScript("return > '';") > > The speed of the leak seems proportional to the size of the string returned. > So my guess is that the string being returned from javascript to RB is not > being freed ever. More testing ... these two different javascript commands both leak at the same speed, so I think perhaps it's the string being passed in to the command that leaks, not the string being returned: Timer1.action static xxx as string // a long string to leak memory faster if xxx = "" then // initialize first time only for i as integer = 1 to 1000 xxx = xxx + "0" next end if if Keyboard.AsyncShiftKey then // toggle the shift key at runtime to test options cmd = "var x = '" + xxx + "'; return '' ;" else cmd = "return '" + xxx + "';" end if result = htm.EvaluateJavaScriptMBS(cmd) ___ Mbsplugins_monkeybreadsoftware.info mailing list mbsplugins@monkeybreadsoftware.info https://ml01.ispgateway.de/mailman/listinfo/mbsplugins_monkeybreadsoftware.info
Re: [MBS] HTMLViewer.EvaluateJavaScriptMBS memory Leak?
On Feb 4, 2012, at 12:12 PM, Christian Schmitz wrote: > > Am 04.02.2012 um 17:39 schrieb Michael Diehr: > >> Hi Christian, >> >> I've discovered what I believe is a small but troubling memory leak in the >> method >> HTMLViewer.EvaluateJavaScriptMBS on mac and the corresponding function >> IERunJavaScriptMBS. > > Okay, could you make a sample project reproducing it? It's very easy to reproduce (sent you a project offlist). this will do it: Timer1.action dim s as string = htmlviewer1.EvaluateJavaScript("return '';") The speed of the leak seems proportional to the size of the string returned. So my guess is that the string being returned from javascript to RB is not being freed ever. > I can't reproduce it here easily, but that may be due the setup with 12.1pr1 > plugins, RS 2011r4 and Mac OS X 10.7.2. Tested and leaking with 10.6.8 and MBS 12.1pr1 >> In tests where I call either function about 50 times per second with small >> commands, I'm seeing leaks that can be as fast as 100KB/second. The >> commands are short javascript functions which query the play status of a >> plugin (flash or quicktime or html5 video). > > Well, NSAutoreleasePoolMBS class exists and may be useful on Mac if that is > due to a pool not being cleared. > >> Since it's leaking on both Mac and Windows when querying either SWF or >> QuickTime or HTML5 video objects, this suggests to me that like the leak may >> be in MBS, rather than, say a leak in IE or WebKit or just Flash or >> QuickTime plugins. > > You can use Instruments.app (coming with Xcode) to find the source of the > leak. > >> * can you see an obvious place in your code where the leak is happening? > > No. > >> * can you fix it? > > No. > >> * if so, can I pay you to make a custom build of 10.1 (I need to issue a >> quick update of my software to fix this and prefer to not update to a later >> MBS for obvious unit-test reasons). > > We could discuss that off list, but I bet it'll be a lot of work. let's see how it goes? > >> n.b.: the leaked memory appears to be released if I reload a blank page in >> the HTMLViewer (on mac) or if I issue htmlViewer.close (win32). Although >> this is a workaround for the leak, there are cases where it's not practical >> to reload the page as some customers expect the software to be running 24/7 >> without interruption. > > > Not sure what you do, but you could at least measure free memory with other > plugin functions. > So you could warn user or restart app when memory is low and you have a > chance to do so. unfortunately it's an automated process that runs w/o user intervention. > > Greetings > Christian > > -- > See you in Orlando, Florida for Real World 2012 > > More details and registration here: > http://www.realsoftware.com/community/realworld.php > > > > ___ > Mbsplugins_monkeybreadsoftware.info mailing list > mbsplugins@monkeybreadsoftware.info > https://ml01.ispgateway.de/mailman/listinfo/mbsplugins_monkeybreadsoftware.info ___ Mbsplugins_monkeybreadsoftware.info mailing list mbsplugins@monkeybreadsoftware.info https://ml01.ispgateway.de/mailman/listinfo/mbsplugins_monkeybreadsoftware.info
Re: [MBS] HTMLViewer.EvaluateJavaScriptMBS memory Leak?
Am 04.02.2012 um 17:39 schrieb Michael Diehr: > Hi Christian, > > I've discovered what I believe is a small but troubling memory leak in the > method > HTMLViewer.EvaluateJavaScriptMBS on mac and the corresponding function > IERunJavaScriptMBS. Okay, could you make a sample project reproducing it? I can't reproduce it here easily, but that may be due the setup with 12.1pr1 plugins, RS 2011r4 and Mac OS X 10.7.2. > In tests where I call either function about 50 times per second with small > commands, I'm seeing leaks that can be as fast as 100KB/second. The > commands are short javascript functions which query the play status of a > plugin (flash or quicktime or html5 video). Well, NSAutoreleasePoolMBS class exists and may be useful on Mac if that is due to a pool not being cleared. > Since it's leaking on both Mac and Windows when querying either SWF or > QuickTime or HTML5 video objects, this suggests to me that like the leak may > be in MBS, rather than, say a leak in IE or WebKit or just Flash or QuickTime > plugins. You can use Instruments.app (coming with Xcode) to find the source of the leak. > * can you see an obvious place in your code where the leak is happening? No. > * can you fix it? No. > * if so, can I pay you to make a custom build of 10.1 (I need to issue a > quick update of my software to fix this and prefer to not update to a later > MBS for obvious unit-test reasons). We could discuss that off list, but I bet it'll be a lot of work. > n.b.: the leaked memory appears to be released if I reload a blank page in > the HTMLViewer (on mac) or if I issue htmlViewer.close (win32). Although > this is a workaround for the leak, there are cases where it's not practical > to reload the page as some customers expect the software to be running 24/7 > without interruption. Not sure what you do, but you could at least measure free memory with other plugin functions. So you could warn user or restart app when memory is low and you have a chance to do so. Greetings Christian -- See you in Orlando, Florida for Real World 2012 More details and registration here: http://www.realsoftware.com/community/realworld.php ___ Mbsplugins_monkeybreadsoftware.info mailing list mbsplugins@monkeybreadsoftware.info https://ml01.ispgateway.de/mailman/listinfo/mbsplugins_monkeybreadsoftware.info
[MBS] HTMLViewer.EvaluateJavaScriptMBS memory Leak?
Hi Christian, I've discovered what I believe is a small but troubling memory leak in the method HTMLViewer.EvaluateJavaScriptMBS on mac and the corresponding function IERunJavaScriptMBS. In tests where I call either function about 50 times per second with small commands, I'm seeing leaks that can be as fast as 100KB/second. The commands are short javascript functions which query the play status of a plugin (flash or quicktime or html5 video). Since it's leaking on both Mac and Windows when querying either SWF or QuickTime or HTML5 video objects, this suggests to me that like the leak may be in MBS, rather than, say a leak in IE or WebKit or just Flash or QuickTime plugins. I'm seeing this in MBS 10.1. Questions: * can you see an obvious place in your code where the leak is happening? * can you fix it? * if so, can I pay you to make a custom build of 10.1 (I need to issue a quick update of my software to fix this and prefer to not update to a later MBS for obvious unit-test reasons). Thanks! n.b.: the leaked memory appears to be released if I reload a blank page in the HTMLViewer (on mac) or if I issue htmlViewer.close (win32). Although this is a workaround for the leak, there are cases where it's not practical to reload the page as some customers expect the software to be running 24/7 without interruption. ___ Mbsplugins_monkeybreadsoftware.info mailing list mbsplugins@monkeybreadsoftware.info https://ml01.ispgateway.de/mailman/listinfo/mbsplugins_monkeybreadsoftware.info