<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Memory usage/ memory leak in Measurement Studio for .NET Languages</title>
    <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449368#M4239</link>
    <description>This attachement shows the memory creep being experienced (pressing Creator + Once + Destroy should give a baseline for running multiple times, however if I then press 200 times my memory goes from 26Mb upto 35Mb&lt;BR /&gt;&lt;BR /&gt;and the highlights of my stackdump are &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;03d2efd4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 24120 NationalInstruments.UI.Internal.b3&lt;BR /&gt;03d2e8b8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 24120 NationalInstruments.UI.Internal.do&lt;BR /&gt;03d2ed5c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 24924 NationalInstruments.UI.Internal.m&lt;BR /&gt;049fd108&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 25728 NationalInstruments.UI.Internal.b2&lt;BR /&gt;03c1ccfc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 26532 NationalInstruments.UI.WindowsForms.Legend&lt;BR /&gt;03d2e36c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28944 NationalInstruments.UI.Internal.r&lt;BR /&gt;7a74d9c8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 247&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 29640 System.ComponentModel.ReflectPropertyDescriptor&lt;BR /&gt;03c1742c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 31356 NationalInstruments.UI.WindowsForms.WaveformGraph&lt;BR /&gt;049fcd94&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 32160 NationalInstruments.Restricted.LegendManager&lt;BR /&gt;7912c444&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 40016 System.Double[]&lt;BR /&gt;03d2d314&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 402&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 51456 NationalInstruments.UI.Internal.aq&lt;BR /&gt;03d2b160&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 402&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 51456 NationalInstruments.UI.Internal.cz&lt;BR /&gt;03d2ae20&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 402&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 51456 NationalInstruments.UI.Internal.ag&lt;BR /&gt;03d24dac&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 57888 NationalInstruments.Restricted.WaveformGraphManager&lt;BR /&gt;790fa3e0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 932&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 214284 System.String&lt;BR /&gt;79124228&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 513&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 306324 System.Object[]&lt;BR /&gt;0018abf0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 19&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 483648&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Free&lt;BR /&gt;791242ec&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2867&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1069416 System.Collections.Hashtable+bucket[]&lt;BR /&gt;&lt;BR /&gt;The finalizer is commented out but was being called for each instance.&lt;BR /&gt;&lt;BR /&gt;Memory will eventually come back but it takes time (almost as if there's a timer holding onto it) and then it'll drop back to ~32Mb which is still a 6Mb increase (measured using Process Explorer).&lt;BR /&gt;&lt;BR /&gt;Can someone tell me what I'm doing wrong ?&lt;BR /&gt;&lt;BR /&gt;Thanks&lt;BR /&gt;&lt;BR /&gt;Regards Paul&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Mon, 04 Dec 2006 17:25:21 GMT</pubDate>
    <dc:creator>pbrowntwi</dc:creator>
    <dc:date>2006-12-04T17:25:21Z</dc:date>
    <item>
      <title>Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/431914#M4121</link>
      <description>Are there any know problems with using 8.0.1 and releasing memory ?&lt;BR /&gt;&lt;BR /&gt;We currently have an application that creates lots of graphs, however it eats memory and never seems to release it. So I've tried to create a small test app that shows the problem and found that doing ClearData (which I assumed would remove data from memory), and then doing a manual GC collect left residual memory behind. This was a basic form with a scatter plot and 2 buttons that added 210,000 items to the plot. (We typically have 15 plots with ~210000 points each on them in 7 lines). &lt;BR /&gt;&lt;BR /&gt;This means that when I first add the data to the plot the memory jumps by ~14Mb, removing the data drops the memory back by ~2mb and then seems to stabilise aroung that number. Is there something else that needs to be done to free up memory ?&lt;BR /&gt;&lt;BR /&gt;Also is the a list of know issues with 8.0.1 somewhere ?&lt;BR /&gt;&lt;BR /&gt;This is the guts of the code:&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void button1_Click(object sender, EventArgs e)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Random rnd = new Random();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;double&amp;gt; x = new List&amp;lt;double&amp;gt;();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;double&amp;gt; y = new List&amp;lt;double&amp;gt;();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; 210000; i++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x.Add( i );&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; y.Add( rnd.NextDouble() );&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scatterGraph1.PlotXY(x.ToArray(), y.ToArray());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void button2_Click(object sender, EventArgs e)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scatterGraph1.ClearData();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GC.Collect();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GC.WaitForPendingFinalizers();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Thanks&lt;BR /&gt;&lt;BR /&gt;Paul&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Tue, 24 Oct 2006 21:22:04 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/431914#M4121</guid>
      <dc:creator>pbrowntwi</dc:creator>
      <dc:date>2006-10-24T21:22:04Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/433714#M4132</link>
      <description>I am having the same problem. I have tried ClearData(), and tried clearing plots and axis. I also tried to force the GC, but when I used the Ants memory profiler, it became obvious that some internal NI classes are holding data. It looks like NI obfuscated some of the internal classes and methods so it is hard to get a clue as to what is going on. It is possible that some collection classes are being held by events. When an object gets tied to an event, it is not garbage collected unless it is manually removed. It is a commong mistake, and there are several articles on the net about solutions to this problem.&lt;BR /&gt;&lt;BR /&gt;Can someone at NI look at their code and see what is going on? My app can't ship until this is fixed.&lt;BR /&gt;&lt;BR /&gt;Mike&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 27 Oct 2006 23:45:25 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/433714#M4132</guid>
      <dc:creator>Mike J</dc:creator>
      <dc:date>2006-10-27T23:45:25Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/434145#M4133</link>
      <description>&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;When you plot data on a plot for the first time, we (Measurement Studio) cache screen points and other things so drawing will be faster. The plot object holds on to this data. When you call ClearData, the plot only clears the raw data and not the screen points etc associated with the data (we will look into this).&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;If you plot data over and over in a loop the memory remains constant. Each time new data is plotted the old data is released and when it comes time to draw the new screen points the old screen points are released. I verified this with the code above by plotting the data in a loop.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Because calling ClearData does not clear the screen points (and other cached values), we need to have the plot object get garbage collected. Here is some code that works. Let me know if this works out for you.&lt;/DIV&gt;&lt;PRE&gt;public partial class Form1 : Form
    {
        private ScatterPlot _plot;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Random rnd = new Random();
            List&lt;DOUBLE&gt; x = new List&lt;DOUBLE&gt;();
            List&lt;DOUBLE&gt; y = new List&lt;DOUBLE&gt;();
            for (int i = 0; i &amp;lt; 210000; i++)
            {
                x.Add(i);
                y.Add(rnd.NextDouble());
            }

            _plot = new ScatterPlot(xAxis1, yAxis1);
            scatterGraph1.Plots.Add(_plot);
            _plot.PlotXY(x.ToArray(), y.ToArray());
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (_plot != null)
            {
                scatterGraph1.Plots.Remove(_plot);
                _plot.Dispose();
                _plot = null;
            }

            GC.Collect();
            GC.WaitForPendingFinalizers();
        }
    }
&lt;/DOUBLE&gt;&lt;/DOUBLE&gt;&lt;/DOUBLE&gt;&lt;/DOUBLE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 30 Oct 2006 17:00:37 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/434145#M4133</guid>
      <dc:creator>breeve</dc:creator>
      <dc:date>2006-10-30T17:00:37Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/434713#M4136</link>
      <description>&lt;DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Calling Dispose() seems to work. I was already clearing the plots, but I was not calling Dispose().&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Mike&lt;/P&gt;</description>
      <pubDate>Tue, 31 Oct 2006 17:24:00 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/434713#M4136</guid>
      <dc:creator>Mike J</dc:creator>
      <dc:date>2006-10-31T17:24:00Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/434751#M4137</link>
      <description>&lt;DIV&gt;&lt;/DIV&gt;
&lt;P&gt;breeve,&lt;/P&gt;
&lt;P&gt;I had a question for you.&amp;nbsp; What kind of performance do you get plotting 210000 points on a plot? &amp;nbsp;We had such bad performance we had to go back to the ActiveX control.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Scott&lt;/P&gt;</description>
      <pubDate>Tue, 31 Oct 2006 17:59:08 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/434751#M4137</guid>
      <dc:creator>Sof</dc:creator>
      <dc:date>2006-10-31T17:59:08Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/434870#M4139</link>
      <description>Performance isn't too bad, we only have problems when adding annotations to the charts and then it goes like treacle.&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Tue, 31 Oct 2006 20:54:21 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/434870#M4139</guid>
      <dc:creator>pbrowntwi</dc:creator>
      <dc:date>2006-10-31T20:54:21Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/436045#M4143</link>
      <description>&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;U&gt;&lt;STRONG&gt;ScatterPlot&lt;/STRONG&gt;&lt;/U&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;&lt;U&gt;&lt;/U&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Here is what I get from running the code&amp;nbsp;below using the Stopwatch class. I set both axes to fixed; [0-1] for the YAxis and [0-210000] for the XAxis at design time. I&amp;nbsp;timed both the ImmediateUpdate case (Graph.ImmediateUpdates=true to time the drawing as well) and non-immediate update case, which is the default. I timed the code 4 times for each and got the average, throwing out the first time.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;ImmediateUpdates=false (default)&lt;/DIV&gt;
&lt;DIV&gt;.0637 seconds&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;ImmediateUpdates = true (times the drawing as well)&lt;/DIV&gt;
&lt;DIV&gt;1.2185 seconds&lt;/DIV&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;SpeedPlot&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Now, I was curious if I could make that time faster by not copying the data. When you call ScatterPlot.PlotXY, all your data is copied to an internal buffer. We&amp;nbsp;do that to maintain the integrity of the plotted data as well as to support charting. I created a&amp;nbsp;SpeedPlot object in the code below. This keeps a reference to the data and maps and draws the points itself, keeping the same timing process as above the following times where obtained:&lt;/P&gt;
&lt;DIV&gt;ImmediateUpdates=false (default)&lt;/DIV&gt;
&lt;DIV&gt;.0000755&amp;nbsp;seconds&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;ImmediateUpdates = true (times the drawing as well)&lt;/DIV&gt;
&lt;DIV&gt;.9413 seconds&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Now before we get all excited about the speedup in the ImmedateUpdates=false case, we need to remember what we are actually timing here. All we are timing is a&amp;nbsp;field set of an address. This does not take long to do. A more accurate estimate of the speedup would be the second case where ImmediateUpdates=true because this times the drawing operation as well. Also remember that with the SpeedPlot, I am doing all the drawing of the plot myself. This means certain features like PointStyles, LineStyles, etc will not be effective. This plot is purely for speed where speed is really needed. I don't recommend using it for anything else, because certain features of the graph will not work.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Give it a try.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;PRE&gt; public partial class Form1 : Form
    {
        private SpeedPlot _plot;
        public Form1()
        {
            InitializeComponent();
            _plot = new SpeedPlot(new Range(0, 210000), new Range(0, 1), xAxis1, yAxis1);
            scatterGraph1.Plots.Add(_plot);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Random rnd = new Random();
            List&lt;DOUBLE&gt; x = new List&lt;DOUBLE&gt;();
            List&lt;DOUBLE&gt; y = new List&lt;DOUBLE&gt;();
            for (int i = 0; i &amp;lt; 210000; i++)
            {
                x.Add(i);
                y.Add(rnd.NextDouble());
            }
            double[] xData = x.ToArray();
            double[] yData = y.ToArray();
           
            Stopwatch watch = Stopwatch.StartNew();
            //switch line below to _plot from scatterGraph1 to test NoCopyPlot.
            scatterGraph1.PlotXY(xData, yData);
            //_plot.PlotData(xData, yData);
            watch.Stop();
            textBox1.Text = watch.Elapsed.TotalSeconds.ToString();
        }

        private class SpeedPlot : ScatterPlot
        {
            private double[] _xData;
            private double[] _yData;

            public SpeedPlot(Range xRange, Range yRange, XAxis xAxis, YAxis yAxis)
                : base(xAxis, yAxis)
            {
                XAxis.Mode = AxisMode.Fixed;
                YAxis.Mode = AxisMode.Fixed;
                XAxis.Range = xRange;
                YAxis.Range = yRange;
            }

            public void PlotData(double[] xData, double[] yData)
            {
                _xData = xData;
                _yData = yData;
                //Need to redraw new points.
                Invalidate();
            }

            protected override void OnBeforeDraw(BeforeDrawXYPlotEventArgs e)
            {
                base.OnBeforeDraw(e);
                if (_xData != null &amp;amp;&amp;amp; _yData != null)
                {
                    PointF[] points = MapDataPoints(e.Bounds, _xData, _yData);
                    using (Pen pen = new Pen(LineColor))
                        e.Graphics.DrawLines(pen, points);
                    e.Cancel = true;
                }
            }
        }
    }
&lt;/DOUBLE&gt;&lt;/DOUBLE&gt;&lt;/DOUBLE&gt;&lt;/DOUBLE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 02 Nov 2006 17:52:49 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/436045#M4143</guid>
      <dc:creator>breeve</dc:creator>
      <dc:date>2006-11-02T17:52:49Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/436505#M4144</link>
      <description>I wanted to add that there is a large performance difference between using GDI (native Win32 drawing API) vs. GDI+ (.NET drawing API).&amp;nbsp; GDI+ lacks hardware support and with Vista coming, it doesn't look like video drivers will be adding support for it anytime soon. On the other hand, video card drivers do provided hardware acceleration for GDI.&lt;BR /&gt;&lt;BR /&gt;GDI+ is what we use for all of our .NET UI controls since these are managed controls and GDI+ is the Microsoft recommended managed drawing API. We use GDI for the ActiveX controls which is why there is a difference in their performance. &lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Fri, 03 Nov 2006 15:48:36 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/436505#M4144</guid>
      <dc:creator>bilalD</dc:creator>
      <dc:date>2006-11-03T15:48:36Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449034#M4234</link>
      <description>&lt;DIV&gt;&lt;/DIV&gt;I don't know if I'm missing something very obvious, however I've been trying to get the charts to dispose correctly and ended up comming to the conclusion that the only way to do this is to unsubscribe all events manually.&amp;nbsp; i.e. if I attach a handler to say the AfterMove event of a cursor, before disposing of the the form I end up having to do a -= on that cursor.&lt;BR /&gt;&lt;BR /&gt;I've ended up finding this out by using Son of strike and getting gcroot on the undisposed form and finding the following&lt;BR /&gt;&lt;BR /&gt;DOMAIN(0014C0C0):HANDLE(Pinned):ba13ec:Root:02564b68(System.Object[])-&amp;gt;&lt;BR /&gt;0166b720(System.ComponentModel.WeakHashtable)-&amp;gt;&lt;BR /&gt;01764618(System.Collections.Hashtable+bucket[])-&amp;gt;&lt;BR /&gt;0166b9f4(System.ComponentModel.TypeDescriptor+TypeDescriptionNode)-&amp;gt;&lt;BR /&gt;0166b9e0(System.ComponentModel.ReflectTypeDescriptionProvider)-&amp;gt;&lt;BR /&gt;0166ba34(System.Collections.Hashtable)-&amp;gt;&lt;BR /&gt;0195a36c(System.Collections.Hashtable+bucket[])-&amp;gt;&lt;BR /&gt;019755c0(System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData)-&amp;gt;&lt;BR /&gt;0197a710(System.ComponentModel.PropertyDescriptorCollection)-&amp;gt;&lt;BR /&gt;0197a68c(System.Object[])-&amp;gt;&lt;BR /&gt;01979e9c(System.ComponentModel.ReflectPropertyDescriptor)-&amp;gt;&lt;BR /&gt;019802f0(System.Collections.Hashtable)-&amp;gt;&lt;BR /&gt;01c33f24(System.Collections.Hashtable+bucket[])-&amp;gt;&lt;BR /&gt;01b5ad28(NationalInstruments.UI.XYCursor)-&amp;gt;&lt;BR /&gt;01b5ad68(NationalInstruments.Restricted.CallbackManager)-&amp;gt;&lt;BR /&gt;01b5ad7c(NationalInstruments.Restricted.MultiKeyDictionary`3[[System.Object, mscorlib],[System.Delegate, mscorlib],[NationalInstruments.Restricted.CallbackManager+a, NationalInstruments.Common]])-&amp;gt;&lt;BR /&gt;01b5ad88(System.Collections.Generic.Dictionary`2[[System.Object, mscorlib],[System.Collections.Generic.Dictionary`2[[System.Delegate, mscorlib],[NationalInstruments.Restricted.CallbackManager+a, NationalInstruments.Common]], mscorlib]])-&amp;gt;&lt;BR /&gt;01b5b0c8(System.Collections.Generic.Dictionary`2+Entry[[System.Object, mscorlib],[System.Collections.Generic.Dictionary`2[[System.Delegate, mscorlib],[NationalInstruments.Restricted.CallbackManager+a, NationalInstruments.Common]], mscorlib]][])-&amp;gt;&lt;BR /&gt;01b5b82c(System.Collections.Generic.Dictionary`2[[System.Delegate, mscorlib],[NationalInstruments.Restricted.CallbackManager+a, NationalInstruments.Common]])-&amp;gt;&lt;BR /&gt;01b5b878(System.Collections.Generic.Dictionary`2+Entry[[System.Delegate, mscorlib],[NationalInstruments.Restricted.CallbackManager+a, NationalInstruments.Common]][])-&amp;gt;&lt;BR /&gt;01b5b7e8(NationalInstruments.UI.BeforeMoveXYCursorEventHandler)-&amp;gt;&lt;BR /&gt;01becab4(Teletest.Views.FrmGeneralDispersionCurve)&lt;BR /&gt;DOMAIN(0014C0C0):HANDLE(WeakSh):ba290c:Root:01becd6c(System.Windows.Forms.Control+ControlNativeWindow)-&amp;gt;&lt;BR /&gt;01becab4(Teletest.Views.FrmGeneralDispersionCurve)&lt;BR /&gt;DOMAIN(0014C0C0):HANDLE(WeakLn):ba312c:Root:01c4ce2c(System.Windows.Forms.NativeMethods+WndProc)-&amp;gt;&lt;BR /&gt;01becd6c(System.Windows.Forms.Control+ControlNativeWindow)&lt;BR /&gt;&lt;BR /&gt;I can only assume that this one is left as I add it manually on the form, I remove all of the +='s that are assigned in the designer before truing to dispose and have the following method to remove everything else&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal static void Remover(ScatterGraph graph)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (graph.Plots.Count &amp;gt; 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ScatterPlot plt = graph.Plots[graph.Plots.Count - 1];&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; graph.Plots.RemoveAt(graph.Plots.Count - 1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plt.Dispose();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plt = null;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (graph.XAxes.Count &amp;gt; 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XAxis xa = graph.XAxes[graph.XAxes.Count - 1];&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; graph.XAxes.Remove(xa);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xa.Dispose();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xa = null;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (graph.YAxes.Count &amp;gt; 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; YAxis ya = graph.YAxes[graph.YAxes.Count - 1];&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; graph.YAxes.Remove(ya);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ya.Dispose();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ya = null;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (graph.Annotations.Count &amp;gt; 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Annotation ann = graph.Annotations[graph.Annotations.Count - 1];&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; graph.Annotations.RemoveAt(graph.Annotations.Count - 1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ann.Dispose();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ann = null;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (graph.Cursors.Count &amp;gt; 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XYCursor csr = graph.Cursors[graph.Cursors.Count - 1];&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; graph.Cursors.RemoveAt(graph.Cursors.Count - 1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; csr.Dispose();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; csr = null;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Is this really required, or is there a way to have the graph dispose correctly ? &lt;BR /&gt;&lt;BR /&gt;Also is there a timescale for a patch to address current issues ?&lt;BR /&gt;&lt;BR /&gt;Thanks&lt;BR /&gt;&lt;BR /&gt;Paul&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Sun, 03 Dec 2006 12:43:39 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449034#M4234</guid>
      <dc:creator>pbrowntwi</dc:creator>
      <dc:date>2006-12-03T12:43:39Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449313#M4236</link>
      <description>&lt;DIV&gt;Can you post a simple project? Some details are unclear.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;UL&gt;
&lt;LI&gt;Are you trying to Dispose the entire form and then recreate another form?&lt;/LI&gt;
&lt;LI&gt;What version of MStudio&lt;/LI&gt;&lt;/UL&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;</description>
      <pubDate>Mon, 04 Dec 2006 16:24:15 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449313#M4236</guid>
      <dc:creator>breeve</dc:creator>
      <dc:date>2006-12-04T16:24:15Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449318#M4237</link>
      <description>&lt;DIV&gt;&lt;/DIV&gt;The implementation of your Remover method is already built into the graph. The graph will dispose all its sub-objects such as plots, cursors, axes, and annotations when the graph is disposed, so you should not have to do this manually. It is essential to remove any event handlers when disposing objects. After removing your event handlers there should not be any memory being used by the graph.</description>
      <pubDate>Mon, 04 Dec 2006 16:31:28 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449318#M4237</guid>
      <dc:creator>Abhishek Ghuwalewala</dc:creator>
      <dc:date>2006-12-04T16:31:28Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449338#M4238</link>
      <description>So even if I explicitly call dispose on the graph object I still need to track every event that has been bound during it's lifetime and unsubscribe them ? &lt;BR /&gt;&lt;BR /&gt;This seems like something the graph should do itself (especially if it's events that have been bound in the designer)&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 04 Dec 2006 16:55:03 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449338#M4238</guid>
      <dc:creator>pbrowntwi</dc:creator>
      <dc:date>2006-12-04T16:55:03Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449368#M4239</link>
      <description>This attachement shows the memory creep being experienced (pressing Creator + Once + Destroy should give a baseline for running multiple times, however if I then press 200 times my memory goes from 26Mb upto 35Mb&lt;BR /&gt;&lt;BR /&gt;and the highlights of my stackdump are &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;03d2efd4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 24120 NationalInstruments.UI.Internal.b3&lt;BR /&gt;03d2e8b8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 24120 NationalInstruments.UI.Internal.do&lt;BR /&gt;03d2ed5c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 24924 NationalInstruments.UI.Internal.m&lt;BR /&gt;049fd108&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 25728 NationalInstruments.UI.Internal.b2&lt;BR /&gt;03c1ccfc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 26532 NationalInstruments.UI.WindowsForms.Legend&lt;BR /&gt;03d2e36c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28944 NationalInstruments.UI.Internal.r&lt;BR /&gt;7a74d9c8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 247&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 29640 System.ComponentModel.ReflectPropertyDescriptor&lt;BR /&gt;03c1742c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 31356 NationalInstruments.UI.WindowsForms.WaveformGraph&lt;BR /&gt;049fcd94&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 32160 NationalInstruments.Restricted.LegendManager&lt;BR /&gt;7912c444&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 40016 System.Double[]&lt;BR /&gt;03d2d314&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 402&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 51456 NationalInstruments.UI.Internal.aq&lt;BR /&gt;03d2b160&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 402&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 51456 NationalInstruments.UI.Internal.cz&lt;BR /&gt;03d2ae20&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 402&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 51456 NationalInstruments.UI.Internal.ag&lt;BR /&gt;03d24dac&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 201&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 57888 NationalInstruments.Restricted.WaveformGraphManager&lt;BR /&gt;790fa3e0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 932&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 214284 System.String&lt;BR /&gt;79124228&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 513&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 306324 System.Object[]&lt;BR /&gt;0018abf0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 19&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 483648&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Free&lt;BR /&gt;791242ec&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2867&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1069416 System.Collections.Hashtable+bucket[]&lt;BR /&gt;&lt;BR /&gt;The finalizer is commented out but was being called for each instance.&lt;BR /&gt;&lt;BR /&gt;Memory will eventually come back but it takes time (almost as if there's a timer holding onto it) and then it'll drop back to ~32Mb which is still a 6Mb increase (measured using Process Explorer).&lt;BR /&gt;&lt;BR /&gt;Can someone tell me what I'm doing wrong ?&lt;BR /&gt;&lt;BR /&gt;Thanks&lt;BR /&gt;&lt;BR /&gt;Regards Paul&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 04 Dec 2006 17:25:21 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449368#M4239</guid>
      <dc:creator>pbrowntwi</dc:creator>
      <dc:date>2006-12-04T17:25:21Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449421#M4241</link>
      <description>&lt;DIV&gt;&lt;/DIV&gt;We have looked at the project you have provided. I am going to file a bug report for the issue. I will let you know when the problem has been investigated and fixed.</description>
      <pubDate>Mon, 04 Dec 2006 19:08:02 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449421#M4241</guid>
      <dc:creator>Abhishek Ghuwalewala</dc:creator>
      <dc:date>2006-12-04T19:08:02Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449460#M4242</link>
      <description>Is there a viewable list of currently know bugs/issues anywhere ? We are nearing shipping and it would be good to know of any other issues that are likely to bite us, annotations were the previous problem to hit us and now this one...&lt;BR /&gt;&lt;BR /&gt;Thanks&lt;BR /&gt;&lt;BR /&gt;Paul&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 04 Dec 2006 20:13:55 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449460#M4242</guid>
      <dc:creator>pbrowntwi</dc:creator>
      <dc:date>2006-12-04T20:13:55Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449480#M4243</link>
      <description>&lt;DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Yes. The list of known issues at the time of release&amp;nbsp;are documented in the readme. You can find the readme through your Start menu&lt;/P&gt;
&lt;P&gt;Start &amp;gt;&amp;gt; All Programs &amp;gt;&amp;gt; National Instruments &amp;gt;&amp;gt; Measurement Studio 8.0.1 for [Visual Studio .NET 2003] | [Visual Studio 2005] &amp;gt;&amp;gt; Readme&lt;/P&gt;</description>
      <pubDate>Mon, 04 Dec 2006 20:53:40 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449480#M4243</guid>
      <dc:creator>Abhishek Ghuwalewala</dc:creator>
      <dc:date>2006-12-04T20:53:40Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449483#M4244</link>
      <description>I was more interested in issues that have been found since release.&lt;BR /&gt;&lt;BR /&gt;Paul&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 04 Dec 2006 21:05:10 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/449483#M4244</guid>
      <dc:creator>pbrowntwi</dc:creator>
      <dc:date>2006-12-04T21:05:10Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/451892#M4279</link>
      <description>&lt;DIV&gt;&lt;/DIV&gt;The problem has been investigated and fixed. The fix will be available in the next release of Measurement Studio after 8.1. Thank you very much for reporting the issue and providing us with code to reproduce it.</description>
      <pubDate>Sat, 09 Dec 2006 01:06:51 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/451892#M4279</guid>
      <dc:creator>Abhishek Ghuwalewala</dc:creator>
      <dc:date>2006-12-09T01:06:51Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/452029#M4280</link>
      <description>What is the timescale for this ? As I said we are about to ship a product and it has much more serious consequences in that than in the test application.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Sun, 10 Dec 2006 10:04:39 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/452029#M4280</guid>
      <dc:creator>pbrown</dc:creator>
      <dc:date>2006-12-10T10:04:39Z</dc:date>
    </item>
    <item>
      <title>Re: Memory usage/ memory leak</title>
      <link>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/452609#M4286</link>
      <description>Hello&lt;BR /&gt;&lt;BR /&gt;We're going to release a patch for this issue. The patch will be available in a week or two.&lt;BR /&gt;&lt;BR /&gt;Sorry for the inconvienience.&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Mon, 11 Dec 2006 23:39:43 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/Measurement-Studio-for-NET/Memory-usage-memory-leak/m-p/452609#M4286</guid>
      <dc:creator>bilalD</dc:creator>
      <dc:date>2006-12-11T23:39:43Z</dc:date>
    </item>
  </channel>
</rss>

