Daniel Dekany wrote:
Friday, December 12, 2003, 7:37:24 PM, Stephen McConnell wrote:
Daniel Dekany wrote:
Friday, December 12, 2003, 5:09:03 PM, Timothy Bennett wrote::-)
[snip]
The Sun GC guys highly discourage the use of pooling due to alot of
improvements and optimizations in the JDK1.4+ garbage collector. The JDK1.5 GC will even smarter and self-tuning. The only exception to the "do-not-pool" recommendation is when you have objects that are very expensive to create, such as database connections.
How to invoke the life-cycle events (dispose, etc.) when the GC is responsible to releases the component? Stephen McConnell said that it works so in Merlin, but I'm pessimistic about that it can be implemented correctly on Java platform. What's the trick?
The trick is that a proxy is generated that holds a reference to the actual component. If the proxy is finalized it knows that the component it is referencing has no outstanding references - but the proxy has a reference to the appliance managing the component - so the proxy invokes the decommissioning cycle on the appliance which invokes decomissioning actions on the component which results in component disposal.
It's not accident that I asked this. It's something I waned to solve earlier. This proxy trick was occurred to me, but I found that it is not correct:
a) It is possible that the finalize() of the component, or the finalize() of any other object referred by the component is already invoked before the finalize() of the proxy is invoked. So dispose() will find itself in an abnormal situation, where some of the object are already finalized, or even worst, just being concurrently finalized in another thread.
No - its not possible. The proxy holds a hard reference to the component so the component cannot be finalized before the proxy.
(Also, note that as I said earlier in this thread, seems to me that with
Merling 3.2 transient objects were never GC-ed. Maybe that's a bug.)
There is a special case with coponents that are maked as startup policy enabled.
They exist until the kernel is decommissioned.
Stephen.
--
Stephen J. McConnell mailto:[EMAIL PROTECTED]
|------------------------------------------------| | Magic by Merlin | | Production by Avalon | | | | http://avalon.apache.org/merlin | | http://dpml.net/ | |------------------------------------------------|
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
