I wrote application on asp.net 2.0 using dataset. One dataset I put in
session collection and other (which is small and common for other users) I
put in application. I expected that it will get some amount of memory,
however I expected that this amount of memory will be fixed and will depend
on number of user. When I put code in production I discovered that
aspnet_wp.exe increases memory which it uses. Each second 2meg. What may be
the reason. I expected that when I load new page, every variable that I use
in old page releases memory. How I can find where I did not release memory.
I call each time 'Page unload' when I load new page but never when I close
it.
Peter Bromberg [C# MVP] - 01 Aug 2007 02:02 GMT
Aleks,
What you describe is not a normal operating condition and may very well be
caused by poorly written code (e.g, not closing connections, etc.)
Peter

Signature
Recursion: see Recursion
site: http://www.eggheadcafe.com
unBlog: http://petesbloggerama.blogspot.com
bogMetaFinder: http://www.blogmetafinder.com
> I wrote application on asp.net 2.0 using dataset. One dataset I put in
> session collection and other (which is small and common for other users) I
[quoted text clipped - 6 lines]
> I call each time 'Page unload' when I load new page but never when I close
> it.
Aleks Kleyn - 01 Aug 2007 03:16 GMT
I do not have recursion. The code is prety simple. At logon I open dataset
and appropriate tableadapters and save them and few datatables in session.
Some datatables I may fill on different pages. Some datatables I use on
diferent tables to databind controls. May be dataadapter should be open for
short time or control has hiden recursion.
Also it would be useful to know how much specific page gets in memory or
when I leave it forever, so I can release it forever.
> Aleks,
> What you describe is not a normal operating condition and may very well be
[quoted text clipped - 17 lines]
>> close
>> it.
Kevin Spencer - 01 Aug 2007 12:43 GMT
Keep an eye out for Connections that are not immediately closed when filling
or updating your DataSets.

Signature
HTH,
Kevin Spencer
Microsoft MVP
Printing Components, Email Components,
FTP Client Classes, Enhanced Data Controls, much more.
DSI PrintManager, Miradyne Component Libraries:
http://www.miradyne.net
>I do not have recursion. The code is prety simple. At logon I open dataset
>and appropriate tableadapters and save them and few datatables in session.
[quoted text clipped - 25 lines]
>>> close
>>> it.
Aleks Kleyn - 03 Aug 2007 01:41 GMT
You want to tell that dataadapter in dataset is connection to database. Why
then I need so much connections to database. Why one connection cannot serve
all tables in dataset? And if I forced to reopen dataset each time when I
load new page why I cannot close dataset as soon as it finished?
it possible that I did not understand something. keep eye out means to watch
closely or not to tuch? Or you mean that I think that datatable is filled
and ready to bind control while in reality these procedures work parallel?
> Keep an eye out for Connections that are not immediately closed when
> filling or updating your DataSets.
[quoted text clipped - 28 lines]
>>>> close
>>>> it.
Hans Kesting - 01 Aug 2007 08:48 GMT
> I wrote application on asp.net 2.0 using dataset. One dataset I put in
> session collection and other (which is small and common for other
[quoted text clipped - 6 lines]
> find where I did not release memory. I call each time 'Page unload'
> when I load new page but never when I close it.
What do you mean by "I call each time 'Page unload'"?
You may place code in an Unload eventhandler, but that is called automatically.
Hans Kesting
Aleks Kleyn - 02 Aug 2007 03:47 GMT
I tried to add 'page unload' to code of web page. No code, just break point.
When page loads or I click button on the page I stop at the break point.
When I close page I do not have any break point.
>> I wrote application on asp.net 2.0 using dataset. One dataset I put in
>> session collection and other (which is small and common for other
[quoted text clipped - 13 lines]
>
> Hans Kesting
Eliyahu Goldin - 01 Aug 2007 13:44 GMT
Almost certainly the problem is in storing large amount of data in session
variables. See if you can minimize it. Another idea is to use out-of-process
session management.

Signature
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net
>I wrote application on asp.net 2.0 using dataset. One dataset I put in
>session collection and other (which is small and common for other users) I
[quoted text clipped - 6 lines]
>I call each time 'Page unload' when I load new page but never when I close
>it.
Aleks Kleyn - 02 Aug 2007 03:52 GMT
Probably you are right. Do you mean that I need to try web service? Or there
are other ways also?
> Almost certainly the problem is in storing large amount of data in session
> variables. See if you can minimize it. Another idea is to use
[quoted text clipped - 10 lines]
>>memory. I call each time 'Page unload' when I load new page but never
>>when I close it.
Eliyahu Goldin - 02 Aug 2007 08:41 GMT
Minimizing session using and disposing variables is an architectural
decision.
Out-of-process session management means using either a special Windows
service available in asp.net or a SQL Server database. Switching to the
Windows service is simple but you may need to put a [Serializable] attribute
on the classes you put into session..

Signature
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net
> Probably you are right. Do you mean that I need to try web service? Or
> there are other ways also?
[quoted text clipped - 12 lines]
>>>memory. I call each time 'Page unload' when I load new page but never
>>>when I close it.
Aleks Kleyn - 03 Aug 2007 01:29 GMT
I did today search for session out of state on Microsoft site and found site
http://msdn2.microsoft.com/en-us/library/ms972429.aspx
However not studio 2005, nor Orcas can accept code
<configuration>
<sessionstate
Not in XP, neither in server 2003. It means that at least at this time I
cannot use this code. Probably the best solution is to reopen dataset each
time when I load new page. Probably also to keep this code in separate web
service which will return only datatable or datarow. As I remember from my
past experince web service cannot keep values when I go from one page to
another. This way I loose the essential of dataset.
I put attention to another thing. I put in the corner of screen task
manager, so I was able to watch how much memory I need. I used 2 pages.
First page plain asp code, second initialize dataset, can abandon session if
I want and to return to the first page. When I load first page the memory
grew up to 60mb. Second page sometimes added 2-5mb, sometimes nothing.
Memory reduced it size very rare. If I did long break between loading of
first page it could increase memory up to 10mb (Even i did not allocate
there any variable). This way I increse memory up to 130mb. The same code in
asp 1.0 takes only 14mb. It means that garbage collection does not work is
it suppose to be.
> Minimizing session using and disposing variables is an architectural
> decision.
[quoted text clipped - 20 lines]
>>>>did not release memory. I call each time 'Page unload' when I load new
>>>>page but never when I close it.
Aleks Kleyn - 03 Aug 2007 18:18 GMT
One question more. i think it is very important. Assume class has private
dataset and public rowset. Now. When I put this object into collection (in my
case session) what do I really put inside collection. If I put object itself,
this is really huge demand to the memory. But if I put reference then this is
no matter how large object is.
However question may be put differently. In what address space does object
exist. If to be placed into session it should exist in session then it will
be better to create web service. But even in this case I not sure that when I
put object which refers to web service into session I will not put into
session the whole staff.
> I did today search for session out of state on Microsoft site and found site
> http://msdn2.microsoft.com/en-us/library/ms972429.aspx
[quoted text clipped - 43 lines]
> >>>>did not release memory. I call each time 'Page unload' when I load new
> >>>>page but never when I close it.