/** * After collecting garbage during one pass (per this request), set whether additional passes are still required. * * @param additionalPassRequired true if this pass did not collect all known gargabe and additional passes are required, or * false otherwise * @throws IllegalStateException if the request is frozen */ public void setAdditionalPassRequired( boolean additionalPassRequired ) { checkNotFrozen(); this.additionalPassRequired = additionalPassRequired; }
protected void collectGarbage( int maxNumberOfPasses ) { RepositoryConnection connection = connectionFactory.createConnection(source.getName()); try { for (int i = 0; i != maxNumberOfPasses; ++i) { // And request garbage collection ... CollectGarbageRequest request = new CollectGarbageRequest(); connection.execute(context, request); if (!request.isAdditionalPassRequired()) break; } } finally { // Always close this connection after each pass ... connection.close(); } } }
CollectGarbageRequest request = new CollectGarbageRequest(); connection.execute(context, request); gcSource.recordPass(); if (request.isAdditionalPassRequired() && gcSource.hasPassesRemaining()) {