diff options
author | Mark Spruiell <mes@zeroc.com> | 2002-03-10 22:34:37 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2002-03-10 22:34:37 +0000 |
commit | 74ced45d114ed6c02d198b2780b202624f5910ff (patch) | |
tree | 40a1ff3379db728ed993e890d225561ef8209da2 /java/src | |
parent | destroy BasicStream (diff) | |
download | ice-74ced45d114ed6c02d198b2780b202624f5910ff.tar.bz2 ice-74ced45d114ed6c02d198b2780b202624f5910ff.tar.xz ice-74ced45d114ed6c02d198b2780b202624f5910ff.zip |
explicitly destroy streams; cleanup
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/IceInternal/BasicStream.java | 7 | ||||
-rw-r--r-- | java/src/IceInternal/Incoming.java | 16 | ||||
-rw-r--r-- | java/src/IceInternal/ThreadPool.java | 1 |
3 files changed, 17 insertions, 7 deletions
diff --git a/java/src/IceInternal/BasicStream.java b/java/src/IceInternal/BasicStream.java index c880b3d7bc1..ad568e3f347 100644 --- a/java/src/IceInternal/BasicStream.java +++ b/java/src/IceInternal/BasicStream.java @@ -28,6 +28,10 @@ public class BasicStream _writeEncapsCache = null; } + /* + * Do NOT use a finalizer for BasicStream - this causes a + * severe performance penalty! + * protected void finalize() throws Throwable @@ -39,9 +43,10 @@ public class BasicStream super.finalize(); } + */ // - // Optional - deterministic destruction + // Must be called in order to reclaim the buffer // public void destroy() diff --git a/java/src/IceInternal/Incoming.java b/java/src/IceInternal/Incoming.java index ace56c2e838..3d64cccb856 100644 --- a/java/src/IceInternal/Incoming.java +++ b/java/src/IceInternal/Incoming.java @@ -71,8 +71,7 @@ public class Incoming if (servant == null && current.identity.category.length() > 0) { - locator = _adapter.findServantLocator( - current.identity.category); + locator = _adapter.findServantLocator(current.identity.category); if (locator != null) { servant = locator.locate(_adapter, current, cookie); @@ -99,8 +98,7 @@ public class Incoming { if (current.facet.length() > 0) { - Ice.Object facetServant = - servant.ice_findFacet(current.facet); + Ice.Object facetServant = servant.ice_findFacet(current.facet); if (facetServant == null) { status = DispatchStatus.DispatchFacetNotExist; @@ -127,8 +125,7 @@ public class Incoming { _os.endWriteEncaps(); - if (status != DispatchStatus.DispatchOK && - status != DispatchStatus.DispatchUserException) + if (status != DispatchStatus.DispatchOK && status != DispatchStatus.DispatchUserException) { _os.resize(statusPos, false); _os.writeByte((byte)status.value()); @@ -279,6 +276,13 @@ public class Incoming return _os; } + public void + destroy() + { + _is.destroy(); + _os.destroy(); + } + private Ice.ObjectAdapter _adapter; private BasicStream _is; private BasicStream _os; diff --git a/java/src/IceInternal/ThreadPool.java b/java/src/IceInternal/ThreadPool.java index c6b5c494ba4..2e1c076b6a2 100644 --- a/java/src/IceInternal/ThreadPool.java +++ b/java/src/IceInternal/ThreadPool.java @@ -518,6 +518,7 @@ catch (RuntimeException ex) if (info.callFinished) // Call finished() on the handler? { hinfo.handler.finished(); + hinfo.handler._stream.destroy(); } if (hinfo.handler.server()) { |