The information in this article applies to:
Java applications can register a sink with the JVMmem ActiveX Template Library (ATL) server, which periodically monitors memory load. When a memory threshold is exceeded, the server fires a notification event to the Java application indicating that the Java garbage collector should be invoked.
SmartGC.exe provides a foundation for Java applications to more optimally control garbage collection. Since Java garbage collection is triggered by Virtual Memory usage, some applications may run more efficiently if garbage collection is triggered on available RAM or the process Working Set size.
The following file is available for download from the Microsoft Software Library:
SmartGC.exe
http://support.microsoft.com/download/support/mslfiles/SmartGC.exe .
Release Date: Jun-8-1999
For more information about downloading files from the Microsoft Software Library, please see the following article in the Microsoft Knowledge Base:
Q119591 How to Obtain Microsoft Support Files from Online Services
SmartGC Files | Size in Bytes |
CCheckMem.h | 1866 |
CheckMem.cpp | 3779 |
CheckMem.h | 2193 |
CheckMem.rgs | 637 |
dlldata.c | 839 |
JVMmemMod.aps | 3736 |
JVMmemMod.cpp | 1970 |
JVMmemMod.def | 226 |
JVMmemMod.dsp | 13088 |
JVMmemMod.dsw | 541 |
JVMmemMod.h | 19900 |
JVMmemMod.idl | 2430 |
JVMmemMod.rc | 2861 |
JVMmemMod.tlb | 3376 |
JVMmemModCP.h | 917 |
JVMmemModps.def | 251 |
JVMmemModps.mk | 478 |
JVMmemMod_i.c | 1272 |
JVMmemMod_p.c | 21624 |
memory.pmc | 758 |
PSAPI.H | 4172 |
PSAPI.LIB | 19790 |
resource.h | 502 |
rm.cpp | 0 |
StdAfx.cpp | 315 |
StdAfx.h | 908 |
The following steps describe how to use SmartGC.exe.
You will get better results if you run the sample outside the Visual J++ IDE; that is, from Explorer:
After about a minute the Object Cnt: should match the Vector Cnt: and the Current Working Set and Available Physical Memory should return near initial Levels.
Note All the memory statements in this article assume other applications are not consuming more memory while you run the sample test. Obviously, if you start several large applications, the current available memory will be lowered regardless of GC activity on the test sample.
The current available memory and current working set may take some time to return to initial levels, as Windows NT does not immediately trim the working set if there is no need for RAM.
Notice the program calls SetProcessWorkingSetSize in the constructor to encourage Windows NT to limit the maximum Working Set.
Use the following steps to test that the GC sink routine is actually forcing the freeing of memory and objects:
For the latest Knowledge Base articles and other support information on Visual J++ and the SDK for Java, please see the following pages on the Microsoft Technical Support site:
http://support.microsoft.com/support/visualj/
http://support.microsoft.com/support/java/