code: public void shutdown() {
          if (zombie) {
              return;
          }
          logger.info("Shutting down Rythm Engine: [%s]", id());
          if (null != _cacheService) {
              try {
                  _cacheService.shutdown();
              } catch (Exception e) {
                  logger.error(e, "Error shutdown cache service");
              }
          }
          if (null != _secureExecutor) {
              try {
                  _secureExecutor.shutdown();
              } catch (Exception e) {
                  logger.error(e, "Error shutdown secure executor");
              }
          }
          if (null != _resourceManager) {
              try {
                  _resourceManager.shutdown();
              } catch (Exception e) {
                  logger.error(e, "Error shutdown resource manager");
              }
          }
          if (null != shutdownListener) {
              try {
                  shutdownListener.onShutdown();
              } catch (Exception e) {
                  logger.error(e, "Error execute shutdown listener");
              }
          }
          if (null != nonExistsTemplatesChecker) {
              nonExistsTemplatesChecker.onShutdown();
          }
          if (null != _templates) _templates.clear();
          if (null != _classes) _classes.clear();
          if (null != _nonExistsTags) _nonExistsTags.clear();
          if (null != nonExistsTemplates) nonExistsTemplates.clear();
          if (null != _nonTmpls) _nonTmpls.clear();
          _classLoader = null;
          Rythm.RenderTime.clear();
          zombie = true;
      }
docs: Shutdown this rythm engine