In our app, when user does a search, data is retrieved from the server and brought over to the client in a new Dataset. We have a rather simple control using an UltraTree bound to a DataTable in a Dataset.
So every time a search happens, we rebind the UltraTree to the DataTable in new Dataset. With that, we expect old references from UltraTree to the DataTable in the old Dataset to be cleared.
Our memory profiler tells us that the UltraTree continues to hold references the DataTable in the old Dataset. This keeps the Dataset from being garbage-collected and it continues living in memory well beyond its useful life.
Is UltraTree holding references to Datatable it was previously bound to a known issue? Are there ways to release the bindings so that references are cleared? We are still on version 7.3 and cannot upgrade.
Thanks!
Hello,
I am just checking about the progress of this issue. Did you solve your issue accordingly to the information that I provided you?
Let me know if you need any further assistance.
Thank you for using Infragistics Components.
Hristo, Thanks for checking back. The Reset() on UltraTree did not help. I could not find the time to create a new project to reprod the problem.
The leak that I am pursuing involves a complete DataSet. I found that UltraTree does not let go of the reference. After I commented that out, I found that there was another one involving use of UltraGrid. I should ask about it in another thread. But in a nutshell, the problem with that is that when I rebind a new DataSet to the UltraGrid, just like the UltraTree, the UltraGrid columns continue holding onto reference to a DataColumn. That results in DataTable and hence the DataSet being referenced and being leaked.
Do you have any other suggestion regarding UltraTree leakage? or is reprod with a sample the only alternative?
I was able to reprod the issue with a simpler sample. Please unzip and review.
Every time I press the button, a data retrieval happen in our case from the DB. In case of this example, data retrieval is from XML. It is then bound to the UltraTree.
I am using the Red Gate Memory Profiler to look for leaks. I have captured result after two data retrieval. As you can see from the screenshots there are two datasets in memory after the second data retrieval. If I continue, there would be an additional one for every additional data retrieval.
I am attaching Red Gate Profiler results to help you confirm that there is really leak happening.
The following one shows an old DataSet object that has New as No (it existed from the previous data retrieval) taking up 2.7MB of memory.
The following show how the UltraTree is still holding onto the DataSet via the various objects in the chain.
Please use the attached sample to help debug. We are unfortunately required to continue using V7.3 due to our large customer base that cannot easily upgrade. In the attached zip, you will find all the necessary DLL included. That way you can run it as is.
If you have determine that this has been fixed it in newer releases, please suggest some workaround for v7.3
Sample program attached -->
Have you been able to download and verify that your issue is fixed with the latest service release available?
This service release is now available under your account at the Infragistics Website. To download the service release, log in to
‘My IG’ and select ‘Keys & Downloads’. Select the appropriate tab for this product, then the license key. The available service releases should now be listed on the page.
Please let me know if you have any further questions.
Sincerely,
Hristo
Developer Support Engineer
Infragistics, Inc.
www.infragistics.com/support
Thank for your feedback.
Please let us know if you have any other questions.
Hi Hristo,