AJAX :: ToolkitScriptManager Memory Leak - Using IE7 And Have Removed All Inline JS And JS Files
Jan 17, 2011
I'm using the ToolkitScriptManager on a page so that I can use the update panel. Everytime I refresh the page the mem usage in task manager jumps up 3-4megs. I'm using IE7 and have removed all inline JS and JS files to no avail.
I created a site which fills an UpdatePanel with dynamically created buttons when clicking on an other button. Now every time I click the button the used memory increases. I already tried the workaround from http://www.crockford.com/javascript/memory/leak.html to remove old eventhandlers before updating the UpdatePanel. But the used memory still increase. Is there a problem with my code or is there an other workaround?
Here is the code of a sample aspx site which shows the problem: [Code]....
I have a memory leak somewhere that I cant find. Every few days my server will crash, and just before that I log a ton of SQL errors stating that it is "out of memory".
I cant find it anywhere, all of my connections are being disposed like so:
[Code].... Then I call the connection from my pages like so:[Code]....
That is all pretty straight forward. The connection is disposed because it is implementing the USING clause. I am opening the connection in my connection manager class, and not where it is being utilized?Or, could the problem be in the below method I am using to populate a SqlDataReader:[Code]....
Now, at first it appears as though this could be the problem because the Connection isn't part of a USING clause, however doesn't the 'Data.CommandBehavior.CloseConnection' pretty much do the same thing. This makes sure that the connection is closed when the reader is closed, right? Here is how I call that above reader from my login page code behind:[Code]....
So the DataReader will get closed even without the .Close() because it is in the USING, and the connection should get closed because I specified it in the ExecuteReader paramters right?
On http://msdn.microsoft.com/en-us/library/w070t6ka(v=VS.100).aspx there is an example on how to do impersonation with .net 4.0. We have used this example in a class that inherits IDisposable for ease of use. However, when we use this class in a asp.net web application, we notice a slight but steady increase of Pool Paged Bytes in performance monitor. After a week, the application crashes.
I've tried different implementations of the impersonation-class, using http://msdn.microsoft.com/en-us/library/w070t6ka(v=VS.90).aspx and http://support.microsoft.com/kb/306158 as reference, but they all show the same leak.
Where does this leak come from? Is there a problem with the windows api? We are running Windows 2008 R2.
This is our current version of the impersonation class:
public class Impersonator : IDisposable { public Impersonator(string username, string domain, string password) { if (!ImpersonateValidUser(username, domain, password))[code]....
And this is the performance monitor graph of two webservers using different versions of the class:
When we disable the class, and use global impersonation via web.config, those lines are completely flat.
Update,I have made a test-application that successfully reproduce the problem. It can be downloaded here:
I'm writing an MVC app and want to have a central DataBase factory class to provide all my DB connections, something like this:-
[Code]....obviously I'll have to instanciate this every time I need to use it, so I was thinking of making it a static class:-
[Code].... so that instead of my controller code saying
[Code].... I can just say
but would this cause a memory leak? I'm sure I remember reading somewhere that if a static class creates objects that persist beyond it's methods and return those (esp things like DB connection objects) these won't get garbaged collected when the calling method is disposed of as they were created/referenced outside the scope of that calling (controller action) method and so will hang around in memory?
var tableObject = DatabaseFactory.GetDatabaseTable(); List<DbRecord> records = tableObject.Table.ToList();
I have an .Net Framework #4.0 application that makes a large number of web requests using the WebRequest/WebResponse classes , as i see it has memory leak (or maybe i am doing something wrong)I Wrote some small simple application that demonstrates this:
class Program { public static void Main(string[] args)[code]...
The only one solution i came up with is use GC.Collect() (unmarked in example) , All the object are disposed , all streams are closed , am I missing something ?I found something but i don't understand the reason , if i minimize Console the memory usage decreases and looks O.K , what can be the reason for that is there a problem with Conosole or WinForm .
I've created a small class library to asynchronously call a WebService(Fire and Forget. I don't need the result).In a Windows Form application, the XXXAsync() method works fine. But, in a Web Application, the process is locked until the XXXCompleted event is fire.My problem is: I tried to create a Delegate and use the Begin/EndInvoke to call the XXXAsync() method. It worked fine, but, the w3wp process seems to be consuming a huge amount of memory. I'm calling the EndInvoke method properly. Invoking the GC.Collect did not free any memory
Any tips How to figure out where is memory leak in my Facebook app, its ASPX using Facebook toolkit DLL and I am afraid the bug may be in that CS library.
The problem is that after one week uptime, server is running out of memory and needs to be rebooted, there are quite many users and I cannot run debugger on this "production server", so I would need to simulate somehow use on my local PC.
I am facing problem memory leak when I bind GridView to my dataset. The dataset will be retrieve when page first loaded (Not postback) and store into session. ANy postback will reuse the dataset from session.
The problem now is, whenever any postback, the memory leak is keep increasing and till 1GB. I read some articles and mentioned it is ASP.NET databind issue. Is it true? Any workaround?
I am using DevExpress Gridview basically, and hit out of memory exception whenever I keep refresh page that contains huge data. I reported to DevExpress team and they claimed it is ASP.NET gridview issue.
Therefore, I create a simple project, a girdview to sqlDataSource. Run the page and press F5 to refresh. I use ANTS profiler to check if any object instance is keep increasing but never been disposed. I found that, memory does happen in this simple project, as what DevExpress team claimed.[Code]....
I have an application which was recently ported from Classic ASP to .NET 3.5. I'm pulling some data from a stored procedure and once retrieved, I'm doing using the Select method on the DataTable in a loop so I don't have to keep going back to the database.It appears that there's something wrong here as I can refresh the page repeatedly and see the memory usage increase by a few megabytes, up to the point where we get an error. If we recycle the app pool in IIS, it starts working again, for a little while.
Is there a memory leak in this method? I did some research on the subject and Microsoft said there was an issue like that in .NET 1.0 and 1.1, but I'm using a higher version.Or, is this something else, such as not managing resources correctly? Here's a snipped of my code:
[Code]....
Initially, this app was using XML instead of a datatable and using XPATH to query the data, but it was too slow. I thought using a dataset with DataTable selects was a better option, but now we found this issue. I was thinking since the loop executes several hundred times that getting all the data and filtering through it on the client was a better choice instead of calling several web methods to get the subsets of data.
It happens frequently when I try to copy & paste code inside VS 2010 with following message:
insufficient available memory to meet the expected demands of an operation at this time, possibly due to virtual address space fragmentation. Please try later.
and I check the memory usage with taskmanager on my computer. It is fine.
In order fix it, I need to close VS 2010 and restart again.
If you have too many javascript file includes with a compositescript in a script manager you get this error..."The resource URL cannot be longer than 1024 characters. If using a CompositeScriptReference, reduce the number of ScriptReferences it contains, or combine them into a single static file and set the Path property to the location of it."
I know how to fix this using a plane old asp:scriptmanager (use script manager proxies). But how do I fix it using a ToolkitScriptManager?
<ajaxToolkit:ToolkitScriptManager ID="GeneralScriptManager" CombineScripts="true" CombineScriptsHandlerUrl="Utility/CombineScriptsHandler.ashx" runat="server" AsyncPostBackTimeout="480" EnablePageMethods="true"> <CompositeScript> <Scripts> <asp:ScriptReference Path="JavaScript/jQuery/jquery-1.4.1.min.js" / ... A whole lot more script references here </Scripts> </CompositeScript> </ajaxToolkit:ToolkitScriptManager>
UpdateI've tried doing this with the script combiner included in the sample application. I think it's right, but I've been wrong plenty of times before... No luck though.Another update So, I thought that maybe if I included multiple CompositeScript blocks within the single ToolkitScriptManager it might create them all as separate files. Nope. Still get the same error. No one has any ideas? When I Google "toolkitscriptmanager cannot be longer than 1024 characters" this StackOverflow question is the number 1 result...
I am selecting the file in the file uploader and when i press the button,the page gets postbacked and the selected files in the file uploader gets removed. I need to remain the selected file in the file uploader even thought the button clicked.
App is imported in the parent web.config file, Tom and App have classes with the same names.To avoid errors resulting from ambiguous class names I removed the App namespace from the sub-directory where the Tom namespace is used.
However the namespace App is still imported on content pages that have a master page outside the Tom directory. This causes the aforementioned errors.Here is my dir structure
-Root Directory --Default.master --web.config (App is added in web.config) --Tom Sub-diretory ---web.config (App is removed in web.config) ---Content page that uses Default.master (Here is the problem) ---Page without master (Works OK)
I have a form which I am using the RoundedCornersExtender, If I am using the ScriptManager control I am getting the following error-Error: AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. Ensure the correct version of the scripts are referenced. If you are using an ASP.NET ScriptManager, switch to the ToolkitScriptManager in AjaxControlToolkit.dll.I googled it and found that one way to overcome this is to use the ToolkitScripyManager, I replaced the ScriptManager with the ToolkitScriptManager and I dont get the above error anymore. On this same form I am using an UpdatePanel control but from some reason I am not getting a partial render but always a full page render.
I just downloaded the latest (3.5.40412.0) version of Ajax Control Toolkit and in order to update the existing version, I have replaced <asp:ScriptManager with <ajaxtoolkit:ToolkitScriptManager. The page loads with an javascript error:
Error: $get("id of ToolkitScriptManager_hiddenfield") is null Source File: https://localtest.dk/layouts/site.aspx?_tsm_hiddenfield_=sitesscriptmanager_hiddenfield&_tsm_combinedscripts_=%3b%3bajaxcontroltoolkit%2c+version%3d3.5.40412.0%2c+culture%3dneutral%2c+publickeytoken%3d28f01b0e84b6d53e%3aen-us%3a1547e793-5b7e-48fe-8490-03a375b13a33%3a475a4ef5%3aeffe2a26%3a1d3ed089%3a5546a2b%3a497ef277%3aa43b07eb%3a751cdd15%3adfad98a5%3a3cf12cf1%3ad2e10b12%3af3d989c9 Line: 48
Back in the "old days" one would use the <asp:ScriptManager></asp:ScriptManager> and <asp:ServiceReferenc /> to allow for WCF Service integration into javascript on web forms. Example:
We have a website which uses a lot of AJAX, specifically update panels, modal popup extenders and a few other extenders. Let me give you a really brief overview of the application structure. We have a master page which hosts the ToolkitScriptManager object and then all the other pages in the site are children of this master page. We have specified the CombineScripts property to True and we have also specified the CombineScriptsHandlerUrl property to point to the handler that comes with the sample AJAX website. We have set the enableCompression and enableCaching properties to True in the web.config file.
We are trying to determine application performance on this site and we have found out that on each page request, the CPU utilization goes up to a 50% which is really very strange (as this is only for 1 user). When we change the CombinScripts property to false, the CPU utilization comes down to 3-4% for each request. The problem which we cannot understand is why is the server not able to cache the combined scripts and why does it try to combine the scripts on each request which is taking the utilization to a very high percentage. I have read a lot on the internet that if we use a handler for combining scripts, it will cache the combine scripts on the server and it will be served from the cache but clearly in our case it does not seem to be working.
We have also tried to use ScriptManager instead and include all the script references (using the ScriptReferenceProfiler) we could in the CompositeScript tag but that does the same thing to CPU as the CombineScripts.
Now i have added modal popup. Used ajax 15.1 toolkit. they said it doesnt require ajax script manager now.)
When i use it without ajaxscript manager it doesnt work. But when i use ajaxscript manager it works. But then i cant use scriptmanager (as two instance cant run).If i dont use script manager update panel wont work. Also i dont dont have any master page.
I'm using SqlBulkCopy to load large file into databse, but a file bigger than 200k give me an error outofmemoryexception. Is there any way to append data into database from a file splitted in two. the first time I can use SqlBulkCopy, but to append second file into my table.
I need to $create Ajax Control Toolkit extenders (i.e. DropDown Extender) manually in JavaScript. To do so, the appropriate ACT scripts need to be loaded (i.e. DropDown.DropDownBehavior.js) manually since they are not declared in the page.
Prior to 3.5, I was loading these using the ScriptManager
[Code]....
My manually added DropDownBehavior.js script is loaded **before** the combined script containing all the ACT base classes resulting in a Value cannot be undefined. Parameter name: baseType
error in JavaScript. If I manually load the base types before DropDown.DropDownBehavior.js, I get Sys.InvalidOperationException:
Type Sys.Extended.UI.BehaviorBase has already been registered.
Is there some way to add these scripts either after the `_TSM_CombinedScripts_` or append to the end of it?
this is my first post in this forum, even though I often search for helps and clarifications over its threads. And many times they are definitely useful!!I had a <asp:ScriptManager> in may MasterPage, wich was used to manage various UpdatePanels I have either in Content pages or in MasterPage.Today I inserted a CalendarExtender, so I had to replace the ScriptManeger with the AJAX ToolkitScriptManager.
At the beginning it seemed to work fine (the calendar pop up and others controls got updated properly). Then I noticed that the nodes in various TreeView are not expanding any more. The TreeViews objects are placed inside an UpdatePanel, in order to expand each node without refreshing the whole content page. And, while a node expands, an UpdatePanel containing a GridView in the content page gets updated.Now, with the new ScriptManager they do not expand, but when clicking on a single node the GridView is updated properly.Here some pieces of code:
[Code]....
Controls registered as triggers.I know I can use only one script manager per page,