Configure the service(s) being called to be stateless. The session will then be automatically destroyed after the service exits. Generally speaking, top-level services should be configured as stateless unless there is a reason to do otherwise. Another approach is to have the Java code explicitly destroy the session. See the screenshot below on where to change the property within WebMethods Developer.
The reason for this change is that the default (Stateless = False) allows the sessions to stick around long after anyone cares about them, but the server is still stuck managing them. If stateless is set to true, the session is immediately removed after the service is finished executing. If you have a lot of top level services set with Stateless-=True (default) you should see a significant performance improvement by switching them to Stateless=False.