code: public synchronized void gc() {
          if (!configuration.isUseGc()) {
              LOG.trace("GC deactivated, no beans will be removed!");
              return;
          }
  
          LOG.trace("Garbage collection started! GC will remove {} beans!", removeOnGC.size());
  
          onRemoveCallback.onReject(removeOnGC.keySet());
  
          for (Map.Entry<Instance, Object> entry : removeOnGC.entrySet()) {
              Instance removedInstance = entry.getKey();
              for (Property property : removedInstance.getProperties()) {
                  propertyToParent.remove(property);
              }
              for (ObservableList list : removedInstance.getLists()) {
                  listToParent.remove(list);
              }
              allInstances.remove(entry.getValue());
          }
  
          removedBeansCount = removedBeansCount + removeOnGC.size();
          removeOnGC.clear();
          gcCalls = gcCalls + 1;
  
          LOG.trace("Garbage collection done! GC currently manages {} referenced beans!", allInstances.size());
      }
docs: Calling this method triggers the garbage collection. For all dolphin beans (see {@link RemotingBean}) that
  are not referenced by a root bean (see {@link RemotingModel}) the defined {@link GarbageCollectionCallback} (see constructor)
  will be called.