code: public static void initialize(String[] args, boolean forceReferenceCleanup,
  			RestartInitializer initializer, boolean restartOnInitialize) {
  		Restarter localInstance = null;
  		synchronized (INSTANCE_MONITOR) {
  			if (instance == null) {
  				localInstance = new Restarter(Thread.currentThread(), args,
  						forceReferenceCleanup, initializer);
  				instance = localInstance;
  			}
  		}
  		if (localInstance != null) {
  			localInstance.initialize(restartOnInitialize);
  		}
  	}
docs: Initialize restart support for the current application. Called automatically by
  {@link RestartApplicationListener} but can also be called directly if main
  application arguments are not the same as those passed to the
  {@link SpringApplication}.
  @param args main application arguments
  @param forceReferenceCleanup if forcing of soft/weak reference should happen on
  each restart. This will slow down restarts and is intended primarily for testing
  @param initializer the restart initializer
  @param restartOnInitialize if the restarter should be restarted immediately when
  the {@link RestartInitializer} returns non {@code null} results