PRB: COM Objects are not Being Released in Java (179062)
The information in this article applies to:
- Microsoft SDK for Java 1.51
- Microsoft SDK for Java 2.0
- Microsoft SDK for Java 2.01
- Microsoft SDK for Java 2.02
- Microsoft SDK for Java 3.0
- Microsoft SDK for Java 3.1
- Microsoft SDK for Java 3.2
- Microsoft Visual J++ 1.0
- Microsoft Visual J++ 1.1
This article was previously published under Q179062 SYMPTOMS
When setting a COM object reference to null and possibly attempting to
force garbage collection by calling gc(), COM objects may not be released
in a timely or predictable fashion.
CAUSE
If you do not call ComLib.release, normal garbage-collection will attempt
to perform the release for you. However, this mechanism is not guaranteed
due to the threading limitations of many COM objects. That is, many COM
objects can be called only on the thread on which they were created.
Because garbage collection occurs at unpredictable times, the required
thread may have expired or may be no longer responding to messages by the
time garbage-collection reclaims the object. In addition, this
unpredictability can obscure true memory leaks and/or tie up important
system resources.
RESOLUTION
It is recommended that you use explicit releases by calling ComLib.release
in order to free COM objects in a timely and predictable fashion.
REFERENCESFor more information (available in the Microsoft SDK for Java documentation), visit the following Microsoft Web site:
For support information about Visual J++ and the SDK for Java, visit the following Microsoft Web site:
Modification Type: | Major | Last Reviewed: | 6/14/2006 |
---|
Keywords: | kbprb KB179062 |
---|
|