Java 6 update 14 już jest

Na stronach Suna pojawiła się kolejna wersja platformy Java zawierająca kilka długo oczekiwanych ulepszeń oraz wiele poprawek błędów.

Nie byłoby w tym nic nadzwyczajnego, gdyby nie fakt, że do update 14 oprócz zwyczajnych poprawek weszły usprawnienia, znacznie poprawiające wydajność platformy:

  • Alokacja obiektów na stosie za pomocą EscapeAnalysis (EA) – do niedawna EA umożliwiała jedynie usuwanie niepotrzebnych blokad, co przekładało się na większą wydajność aplikacji korzystających intensywnie z synchronizacji wątków. Obecnie dołożono do tego możliwość alokacji na stosie obiektów, do których referencje nie są przekazywane poza lokalny kontekst wywołania metody. Dzięki temu obiekty te mogą być usunięte natychmiast podczas zwijania stosu przy wychodzeniu z metody, co odciąża odśmiecacz, zmniejsza zużycie pamięci i poprawia efektywność wykorzystania cache procesora. Wszystko nie wymaga jakiejkolwiek ingerencji w kod źródłowy – wystarczy dodać przełącznik -XX:+DoEscapeAnalysis do argumentów wywołania JVM.
  • Pakowanie referencji (wskaźników) na maszynach 64-bitowych dla aplikacji, które nie potrzebują większej przestrzeni adresowej niż 64 GB. Wskaźniki są reprezentowane wewnętrznie w postaci 32-bitowej, co może zaoszczędzić znaczne ilości pamięci i poprawić efektywność wykorzystania cache procesora.
  • Nowy, eksperymentalny odśmiecacz G1 przeznaczony do aplikacji interaktywnych, mający na celu zminimalizowanie przestojów spowodowanych odśmiecaniem przy równoczesnym zachowaniu dużej przepustowości i niewielkiego narzutu pamięciowego. Istotą działania jest podział dostępnej pamięci na wiele małych fragmentów, które mogą być „sprzątane” niezależnie, przy czym fragmenty zawierające najwięcej „martwych” obiektów są przetwarzane w pierwszej kolejności.

    Należy jednak pamiętać, że odśmiecacz ten jest jeszcze w fazie beta i nie zaleca się go do używania w systemach produkcyjnych, dlatego żeby go uruchomić należy oprócz opcji -XX:+UseG1GC dodać -XX:+UnlockExperimentalVMOptions.

Szczegółowa lista wprowadzonych zmian znajduje się tutaj: http://java.sun.com/javase/6/webnotes/6u14.html
Natomiast samo oprogramowanie można pobrać stąd: http://java.sun.com/javase/downloads/?intcmp=1281

żadnych reklam, sama wiedza.

Zarejestruj się na BEZPŁATNY NEWSLETTER i raz w tygodniu otrzymuj najważniejsze wiadmości
ze świata IT, nowych technologii i kryptowalut.

Bez reklam.

  1. Awatar JCoder
    JCoder

    Można edytować jakoś newsy? Sorry, to mój pierwszy news i chciałem jeszcze w nim coś poprawić…

    1. Awatar michuk
      michuk

      Już możesz — dodałem Ci uprawnienia. Enjoy 🙂

  2. Awatar tom000
    tom000

    Spadles mi jak z nieba z tym newsem – jutro na seminarkach mam prezentowac temat m.in. o optymalizacjach w Javie, bedzie o pare informacji mniej do opracowania 🙂

  3. Awatar hiciu
    hiciu

    Więcej takich newsów! 🙂

  4. Awatar witek
    witek

    O czy ten G1 ma coś wspólnego z IBM JVM Metronome GC w Jikes?

    1. Awatar JCoder
      JCoder

      Raczej nie, choć niektóre koncepcje pewnie są podobne. G1 nie ma ambicji być real-time, raczej jedynie "low-pause". Czyli czasem przyciąć może, ale raczej tak, że nie będzie to zauważalne w aplikacjach interaktywnych. Z tego co widzę, to IBM Metronome ma target < 250 mikrosekund, a w aplikacjach interaktywnych opóźnienia na poziomie 20 ms nie są zauważalne.

  5. Awatar krzabr
    krzabr

    Dziś wyszedł opensolaris 2009.06 , który przyniósł wiele ulepszeń , teraz czytam o ulepszeniu javy przez suna 🙂

    Widać presja oracle na suna odbija się pozytywnym echem 🙂

    1. Awatar Arek
      Arek

      Czym zrobić taką "presję", żeby programiści w 3 tygodnie wymyślili i zaimplementowali zupełnie nowy komponent klasy Garbage Collector?

      Pierdoły Waćpan piszesz. O planowanej zawartości u14 czytałem gdy pojawiła się wersja u12. Wiedziałem też wtedy, że w u13 nie będzie żadnych nowości, tylko poprawienie kilku błędów.
      Antycypowali tą "presję"? A może po prostu na tym polega solidne planowanie pracy?

    2. Awatar mby7930
      mby7930

      Ja tylko dodam, że opensolaris 2009.06 zawiera już JavaFX.

  6. Awatar Arek
    Arek

    Odnośnie "EscapeAnalysis", to może się mylę, ale wydaje mi się, że to nie ma żadnego związku z alokacją pamięci.
    Chodzi raczej o elizję blokad, to znaczy JVM rozpoznaje, że dany obiekt nie ma szans wystąpić w innym wątku stąd konstrukcja synchronized(obj) nie spowoduje wygenerowania kodu entermonitor/exitmonitor (czy jak się to dokładnie nazywa).
    To ma szczególnie pozytywne zastosowanie w tych przypadkach, gdy napisaliśmy klasę, która może być bezpiecznie wykorzystywana w kodzie wielowątkowym (i obiekty tej klasy są mutowalne) a nie chcemy ponosić kosztu synchronizacji tam, gdzie nie jest to potrzebne. Typowy przykład to utworzenie i użycie klasy Vector w zmiennej lokalnej (i nie wpychanie oczywiście tego obiektu gdzieś, gdzie mógłby być użyty jednocześnie w innym wątku).
    O ile wiem taki mechanizm od jakiegoś czasu mało JVM IBM'a. A teraz będzie też w wersji SUN'a.

    1. Awatar Królik
      Królik

      Przeczytaj dokładniej treść newsa – jest napisane, że właśnie u14 do usuwania / modyfikacji blokad dodano alokację na stosie. "Elizja blokad" jest w JVM Suna już od dość dawna.

  7. Awatar krzabr
    krzabr

    Zgadzam sie faktycznie jest w repo :
    http://wgrajfoto.pl/pokazfoto/img0609/desktop2f3d…

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *