2011-07-22 12 views
5

Powiel możliwe:
How to speed up Java VM (JVM) startup time?Jak przyspieszyć uruchamianie JVM?

Piszę narzędzia wiersza polecenia w Java (lub prawdopodobnie w innym języku JVM-based). Problemem jest czas rozruchu maszyny JVM. JVM uruchamia się wolniej niż na przykład Python i Ruby.

Jak przyspieszyć statystykę JVM? Czy mogę wczytać JVM "z góry" (w Linuksie i Windows) w jakiś sposób, aby nie był on ładowany za każdym razem, gdy uruchomię narzędzie w linii poleceń?

+0

Jestem ciekawa, jak to zrobić! Powiedziałbym, żeby schudnąć zależne pliki jar, ale mam nadzieję, że ktoś może pomóc w zdobyciu większej wiedzy. –

+1

Na moim komputerze program "HelloWorld" zajmuje 40 ms, aby załadować/uruchomić/zakończyć. Jak szybko potrzebujesz tego? –

+1

@Peter, zimny lub ciepły początek? –

Odpowiedz

5

Nailgun jest chyba najlepsze rozwiązanie - utrzymuje działającej instancji JVM może być wywoływany przez poleceń (za pomocą super-lekki C klienta).

Jako alternatywę lub opcję dodatkową, możesz spróbować uaktualnić do wersji Java 7, jeśli jeszcze tego nie zrobiłeś - było sporo ulepszeń czasu uruchamiania.

+0

Używamy Jruby w pracy, a czas rozruchu jvm i ładowanie obiektów sprężynowych to część opóźniająca. W ostatnim czasie przełączyliśmy się na konfigurację serwera klienta NailGun i mamy 2X plus poprawa prędkości. Kochamy to! –

3

Do załaduj JVM z wyprzedzeniem możesz użyć Drip. Utrzymuje świeżą JVM w rezerwie z odpowiednią ścieżką klasową i innymi opcjami JVM, dzięki czemu możesz szybko połączyć się i użyć, kiedy jest to potrzebne, a następnie wyrzucić. Funkcja Drip przenosi opcje JVM i przechowuje informacje o tym, jak połączyć się z maszyną JVM w katalogu z wartością skrótu jako jej nazwą.

+0

Dzięki człowieku .... Mam to podstawowe wymaganie, a potem chcę mieć pulę jvms/a nową, jak tylko połączę się z jedną lub ostatnią (muszę profilować i osądzać strategię) A potem Potrzebuję metody round robin/jakiś inny sposób wyboru jvm, jeśli idę wieloma ścieżkami jvm. Czy coś takiego już zbudowano na/rozszerzając "kroplówkę". Jak mam zamiar zamknąć jvm? jakiekolwiek dalsze zasoby? wiki jest rzadkie. –

+0

Mam je, myślę, ze skryptu sh. –