Force garbage collection on a process

G

Ganesh

Is there a utility by microsoft (or anyone) to force garbage collection in a
process without have access to the process code.

regards
Ganesh
 
J

John Spiegel

Hey Ganesh,

The Sysem namespace has a GC class, which has a collect method...

GC.Collect()

Check the help under Garbage Collection, subtopic: Forcing Garbage
Collection.

HTH,

John
 
C

Chris Lyon [MSFT]

Hi Ganesh

There is no Microsoft tool (and I doubt any 3rd party tool exists). Each process gets its own GC Heap(s), and therefore its own GC Thread(s), so forcing a GC Collection on another
process, as far as I know, is impossible. It's probably not really desirable, since the GC is self-tuning and can decide when to collect based on memory pressure and allocation
patterns (among other things).

-Chris

--------------------
From: "Ganesh" <[email protected]>
Subject: Force garbage collection on a process
Date: Tue, 27 Jul 2004 11:44:18 -0700
Lines: 7
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1437
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441
Message-ID: <[email protected]>
Newsgroups: microsoft.public.dotnet.general
NNTP-Posting-Host: ext-nat.kla-tencor.com 192.146.1.254
Path: cpmsftngxa10.phx.gbl!TK2MSFTFEED01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
Xref: cpmsftngxa10.phx.gbl microsoft.public.dotnet.general:140942
X-Tomcat-NG: microsoft.public.dotnet.general

Is there a utility by microsoft (or anyone) to force garbage collection in a
process without have access to the process code.

regards
Ganesh


--

This posting is provided "AS IS" with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

Note: For the benefit of the community-at-large, all responses to this message are best directed to the newsgroup/thread from which they originated.
 
E

Erik Tamminga

Hi Chris,

I've got another questing about the garbage collector.
The application (a windows service app) I created runs fine on my
development system (Xp), consumes ~50Mb ram and seems to collect garbage
just fine. Running the same app on a production server (W2000 Server) the
process keeps consuming more and more memory. I made sure there is no memory
leak in the application. After running a memory profiler I found out gen2
garbage collection is not happening (enough). The application continues to
consume memory until system resources are empty and the server slows down
tremendously.
The app in question is an network management application and is searching
the network for devices/components. The development system uses the same
network for testing (=same environment).
Both systems have the same amount of physical memory. Development server
shows ~50mb memory and 50Mb virtual memory usage. Production server ~800Mb
memory, 500-1000Mb virtual.

Any tips/hints on how to solve this issue?

Erik Tamminga
MCSD

"Chris Lyon [MSFT]" said:
Hi Ganesh

There is no Microsoft tool (and I doubt any 3rd party tool exists). Each
process gets its own GC Heap(s), and therefore its own GC Thread(s), so
forcing a GC Collection on another
process, as far as I know, is impossible. It's probably not really
desirable, since the GC is self-tuning and can decide when to collect based
on memory pressure and allocation
patterns (among other things).

-Chris

-------------------- cpmsftngxa10.phx.gbl!TK2MSFTFEED01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10
..phx.gbl
rights. Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

Note: For the benefit of the community-at-large, all responses to this
message are best directed to the newsgroup/thread from which they
originated.
 
C

Chris Lyon [MSFT]

Hi Erik

A couple of things you might want to try:
-What version of the runtime are you using? v1.1 has better large memory management than v1.0.
-Is your service running with Workstation or Server GC? You'll get better throughput with Server GC (you can specify this by hosting the runtime. See
http://msdn.microsoft.com/msdnmag/issues/01/03/clr/default.aspx)
-If possible, wait for the latest service packs due this summer (v1.0 SP3, v1.1 SP1)
-Take a look at Rico Mariani's blog (http://weblogs.asp.net/ricom/), in particular posts about recycling objects (http://weblogs.asp.net/ricom/archive/2004/02/11/71143.aspx)
and midlife crisis (http://weblogs.asp.net/ricom/archive/2003/12/04/41281.aspx)

Hope that helps!
-Chris


--------------------
From: "Erik Tamminga" <REVERSE_THIS_agnimmate@REVERSE_THIS_nerrats.ln>
References: <[email protected]> <4#[email protected]>
Subject: Re: Force garbage collection on a process
Date: Wed, 28 Jul 2004 13:04:10 +0200
Lines: 78
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1437
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441
Message-ID: <[email protected]>
Newsgroups: microsoft.public.dotnet.general
NNTP-Posting-Host: wc-130.r-195-35-168.essentkabel.com 195.35.168.130
Path: cpmsftngxa10.phx.gbl!TK2MSFTFEED01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP09.phx.gbl
Xref: cpmsftngxa10.phx.gbl microsoft.public.dotnet.general:140992
X-Tomcat-NG: microsoft.public.dotnet.general

Hi Chris,

I've got another questing about the garbage collector.
The application (a windows service app) I created runs fine on my
development system (Xp), consumes ~50Mb ram and seems to collect garbage
just fine. Running the same app on a production server (W2000 Server) the
process keeps consuming more and more memory. I made sure there is no memory
leak in the application. After running a memory profiler I found out gen2
garbage collection is not happening (enough). The application continues to
consume memory until system resources are empty and the server slows down
tremendously.
The app in question is an network management application and is searching
the network for devices/components. The development system uses the same
network for testing (=same environment).
Both systems have the same amount of physical memory. Development server
shows ~50mb memory and 50Mb virtual memory usage. Production server ~800Mb
memory, 500-1000Mb virtual.

Any tips/hints on how to solve this issue?

Erik Tamminga
MCSD

"Chris Lyon [MSFT]" said:
Hi Ganesh

There is no Microsoft tool (and I doubt any 3rd party tool exists). Each
process gets its own GC Heap(s), and therefore its own GC Thread(s), so
forcing a GC Collection on another
process, as far as I know, is impossible. It's probably not really
desirable, since the GC is self-tuning and can decide when to collect based
on memory pressure and allocation
patterns (among other things).

-Chris

-------------------- cpmsftngxa10.phx.gbl!TK2MSFTFEED01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10
.phx.gbl
rights. Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

Note: For the benefit of the community-at-large, all responses to this
message are best directed to the newsgroup/thread from which they
originated.


--

This posting is provided "AS IS" with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

Note: For the benefit of the community-at-large, all responses to this message are best directed to the newsgroup/thread from which they originated.
 
C

Chris Lyon [MSFT]

Hi Shreeman

No, the GC doesn't only collect when the system is idle. If necessary, the GC will pause execution of the application to collect, depending on the GC mode used (on multiproc
machines, Concurrent GC does collections without pausing the application, making it ideal for interactive apps).

Also, collections don't only occur when the system is low on memory. Collections usually happen when an allocation into a particular generation fail. See
http://msdn.microsoft.com/msdnmag/issues/1100/gci/ for more info.

-Chris

--------------------
hi
Though i am not an expert i can share some of my exp on same.while searching the network using wmi and adsi i faced similar problem but my problem was not garbage
collection as i have written a certain service for that and i have disposed my individual instances myself.
so since the garbage collection works only when the system idle and low of memory so will it not be better to componentise ur apps and just the parts ince you are over with it.

may be i am wrong?If you ve solved or have any bettere idea .
mail to me.
i ll be more happy for any comments anfd suggestions.
bye
shreeman
(e-mail address removed)

Erik Tamminga said:
Hi Chris,

I've got another questing about the garbage collector.
The application (a windows service app) I created runs fine on my
development system (Xp), consumes ~50Mb ram and seems to collect garbage
just fine. Running the same app on a production server (W2000 Server) the
process keeps consuming more and more memory. I made sure there is no memory
leak in the application. After running a memory profiler I found out gen2
garbage collection is not happening (enough). The application continues to
consume memory until system resources are empty and the server slows down
tremendously.
The app in question is an network management application and is searching
the network for devices/components. The development system uses the same
network for testing (=same environment).
Both systems have the same amount of physical memory. Development server
shows ~50mb memory and 50Mb virtual memory usage. Production server ~800Mb
memory, 500-1000Mb virtual.

Any tips/hints on how to solve this issue?

Erik Tamminga
MCSD

"Chris Lyon [MSFT]" said:
Hi Ganesh

There is no Microsoft tool (and I doubt any 3rd party tool exists). Each
process gets its own GC Heap(s), and therefore its own GC Thread(s), so
forcing a GC Collection on another
process, as far as I know, is impossible. It's probably not really
desirable, since the GC is self-tuning and can decide when to collect based
on memory pressure and allocation
patterns (among other things).

-Chris

--------------------
From: "Ganesh" <[email protected]>
Subject: Force garbage collection on a process
Date: Tue, 27 Jul 2004 11:44:18 -0700
Lines: 7
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1437
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441
Message-ID: <[email protected]>
Newsgroups: microsoft.public.dotnet.general
NNTP-Posting-Host: ext-nat.kla-tencor.com 192.146.1.254
Path: cpmsftngxa10.phx.gbl!TK2MSFTFEED01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10
..phx.gbl
Xref: cpmsftngxa10.phx.gbl microsoft.public.dotnet.general:140942
X-Tomcat-NG: microsoft.public.dotnet.general

Is there a utility by microsoft (or anyone) to force garbage collection in a
process without have access to the process code.

regards
Ganesh
rights. Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

Note: For the benefit of the community-at-large, all responses to this
message are best directed to the newsgroup/thread from which they
originated.


--

This posting is provided "AS IS" with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

Note: For the benefit of the community-at-large, all responses to this message are best directed to the newsgroup/thread from which they originated.
 
G

Ganesh

Thanks Chris.
I was facing a similar problem that Erik was facing with the gen2 not being
cleaned up.

Will try out the workarounds given here

thanks
Ganesh
"Chris Lyon [MSFT]" said:
Hi Erik

A couple of things you might want to try:
-What version of the runtime are you using? v1.1 has better large memory management than v1.0.
-Is your service running with Workstation or Server GC? You'll get better
throughput with Server GC (you can specify this by hosting the runtime. See
http://msdn.microsoft.com/msdnmag/issues/01/03/clr/default.aspx)
-If possible, wait for the latest service packs due this summer (v1.0 SP3, v1.1 SP1)
-Take a look at Rico Mariani's blog (http://weblogs.asp.net/ricom/), in
particular posts about recycling objects
(http://weblogs.asp.net/ricom/archive/2004/02/11/71143.aspx)
and midlife crisis (http://weblogs.asp.net/ricom/archive/2003/12/04/41281.aspx)

Hope that helps!
-Chris


--------------------
From: "Erik Tamminga" <REVERSE_THIS_agnimmate@REVERSE_THIS_nerrats.ln>
References: <[email protected]>
Subject: Re: Force garbage collection on a process
Date: Wed, 28 Jul 2004 13:04:10 +0200
Lines: 78
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1437
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441
Message-ID: <[email protected]>
Newsgroups: microsoft.public.dotnet.general
NNTP-Posting-Host: wc-130.r-195-35-168.essentkabel.com 195.35.168.130
Path:
cpmsftngxa10.phx.gbl!TK2MSFTFEED01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP09
..phx.gbl
Xref: cpmsftngxa10.phx.gbl microsoft.public.dotnet.general:140992
X-Tomcat-NG: microsoft.public.dotnet.general

Hi Chris,

I've got another questing about the garbage collector.
The application (a windows service app) I created runs fine on my
development system (Xp), consumes ~50Mb ram and seems to collect garbage
just fine. Running the same app on a production server (W2000 Server) the
process keeps consuming more and more memory. I made sure there is no memory
leak in the application. After running a memory profiler I found out gen2
garbage collection is not happening (enough). The application continues to
consume memory until system resources are empty and the server slows down
tremendously.
The app in question is an network management application and is searching
the network for devices/components. The development system uses the same
network for testing (=same environment).
Both systems have the same amount of physical memory. Development server
shows ~50mb memory and 50Mb virtual memory usage. Production server ~800Mb
memory, 500-1000Mb virtual.

Any tips/hints on how to solve this issue?

Erik Tamminga
MCSD

"Chris Lyon [MSFT]" said:
Hi Ganesh

There is no Microsoft tool (and I doubt any 3rd party tool exists).
Each
process gets its own GC Heap(s), and therefore its own GC Thread(s), so
forcing a GC Collection on another
process, as far as I know, is impossible. It's probably not really
desirable, since the GC is self-tuning and can decide when to collect based
on memory pressure and allocation
patterns (among other things).

-Chris

--------------------
From: "Ganesh" <[email protected]>
Subject: Force garbage collection on a process
Date: Tue, 27 Jul 2004 11:44:18 -0700
Lines: 7
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1437
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441
Message-ID: <[email protected]>
Newsgroups: microsoft.public.dotnet.general
NNTP-Posting-Host: ext-nat.kla-tencor.com 192.146.1.254
Path:
cpmsftngxa10.phx.gbl!TK2MSFTFEED01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP1 0
.phx.gbl
Xref: cpmsftngxa10.phx.gbl microsoft.public.dotnet.general:140942
X-Tomcat-NG: microsoft.public.dotnet.general

Is there a utility by microsoft (or anyone) to force garbage
collection
in a
process without have access to the process code.

regards
Ganesh
rights. Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

Note: For the benefit of the community-at-large, all responses to this
message are best directed to the newsgroup/thread from which they
originated.
rights. Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

Note: For the benefit of the community-at-large, all responses to this
message are best directed to the newsgroup/thread from which they
originated.
 

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

Top