So reduzieren Sie den Frühling Speicherbedarf

Möchte ich Sie Fragen, WIE (oder WENN) möglich ist, zu reduzieren, Spring framework, RAM footprint.

Habe ich eine einfache helloworld-app für den Nachweis der Ausgabe. Es gibt nur zwei Klassen und context.xml Datei:

  • Main - Klasse mit main-Methode
  • Test - Klasse für die Simulation einige "arbeiten" (printig Hallo, in endlos-Schleife)

context.xml enthält nur diese:

<context:component-scan base-package="mypackage" />

Test-Klasse enthält nur metod genannt init nennen, der nach Konstruktion:

@Component
public class Test{

    @PostConstruct
    public void init() {
        Thread t = new Thread(new Runnable() {

            @Override
            public void run() {
                try {
                    while (true) {
                        System.out.println("Hello " + Thread.currentThread().getName());
                        Thread.sleep(500);
                    }
                } catch (InterruptedException ex) {
                    ex.printStackTrace();
                }
            }
        });
        t.start();
    } 
}

Bereitete ich zwei Szenarien und beide main - Methode enthält nur eine Zeile.

Im ersten Szenario main-Methode tut: (new Test()).init();
App funktioniert ohne Feder und verbraucht nur ca. 8MB RAM.

Im zweiten Szenario main-Methode enthält die folgenden: new ClassPathXmlApplicationContext(new String[]{"spring/context.xml"});
So ist die app initialisiert wird, bei Spring-container und verbraucht ca. 45MB RAM !

Gibt es eine Möglichkeit, wie zu reduzieren (im besten Fall vollständig loszuwerden) diesem zusätzlichen Speicher ? So weit ich war nicht in der Lage zu finden keine passende Lösung.

Mir nichts aus, wenn es ist der zusätzliche Speicherbedarf auf Start - das ist völlig in Ordnung, aber danach muss ich unsere app zu reduzieren.

(Die Geschichte, die hinter dieser Frage ist ein bisschen komplizierter, aber das ist für mich jetzt der Kern des Problems.)

Danke

  • wie hast du das Maß der Speicher Verbrauch?
  • Wenn Sie möchten, verwenden Frühling als DI-container, würde ich dir empfehlen, zu versuchen, etwas leichter wie Guice oder Dolch.
  • Dies ist nur eine Idee, (ich weiß nicht, ob es funktioniert): ich würde erwarten, dass Sie Verringerung des Speicherbedarfs (PermGen), wenn Sie nutzen spring, java-basierte Konfiguration anstelle der xml-Konfiguration, denn ich erwarte, dass der Frühling dann nicht das laden der xml-libaries, die für das Lesen der Datei.
  • Ich bin mit dem windows task-manager, weil die eigentlich alocated Speicher ist der einzige Speicher, der Fragen an mich. Und für alles andere verwende ich JProfiler
  • thx für den Tipp, ich werde es einmal versuchen
  • nur mithilfe der annotation-config speichert nur 2M.

InformationsquelleAutor Kousalik | 2014-03-05
Schreibe einen Kommentar