memory leak in asp 2.0

A

Aleks Kleyn

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.
 
G

Guest

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
 
A

Aleks Kleyn

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.
 
H

Hans Kesting

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.

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
 
K

Kevin Spencer

Keep an eye out for Connections that are not immediately closed when filling
or updating your DataSets.

--
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

Aleks Kleyn said:
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.
"Peter Bromberg [C# MVP]" <[email protected]>
wrote in message
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
--
Recursion: see Recursion
site: http://www.eggheadcafe.com
unBlog: http://petesbloggerama.blogspot.com
bogMetaFinder: http://www.blogmetafinder.com
 
A

Aleks Kleyn

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.
 
A

Aleks Kleyn

Probably you are right. Do you mean that I need to try web service? Or there
are other ways also?
Eliyahu Goldin said:
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.

--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net


Aleks Kleyn said:
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.
 
E

Eliyahu Goldin

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..

--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net


Aleks Kleyn said:
Probably you are right. Do you mean that I need to try web service? Or
there are other ways also?
Eliyahu Goldin said:
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.

--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net


Aleks Kleyn said:
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.
 
A

Aleks Kleyn

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.

Eliyahu Goldin said:
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..

--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net


Aleks Kleyn said:
Probably you are right. Do you mean that I need to try web service? Or
there are other ways also?
Eliyahu Goldin said:
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.

--
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 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.
 
A

Aleks Kleyn

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?
Kevin Spencer said:
Keep an eye out for Connections that are not immediately closed when
filling or updating your DataSets.

--
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

Aleks Kleyn said:
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.
"Peter Bromberg [C# MVP]" <[email protected]>
wrote in message
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
--
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
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.
 
G

Guest

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.

Aleks Kleyn said:
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.

Eliyahu Goldin said:
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..

--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net


Aleks Kleyn said:
Probably you are right. Do you mean that I need to try web service? Or
there are other ways also?
message 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.

--
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 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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top