Navigation
 

Java teljesítmény-elemzések

A Java platformot nem ismerők számára a legelső érv a Java ellen a lassúsága. A következő oldalakon és linkeken ezt a lassúsággal kapcsolatos tévhitet illetve hiányos ismeretet szeretnénk eloszlatni.

Miért nem lassú a Java?

Röviden összefoglalva elsősorban azért, mert a modern Java Virtuális Gépek gyors natív fordítási, valamint futásidejű profiling technológiával rendelkeznek, amelyek lehetőséget bizosítanak a gyors elindulásra és a hosszú távú futás-optimalizálásra egyaránt. A technológia a HotSpot nevű vituális géphez köthető, amely abban különbözik a fordítóprogramoktól, hogy a program használatának sajátosságai alapján jobban tudja optimalizálni a végrehajható natív kódot.

De a Garbage Collection nagyon sok időt elvesz, nem?

A Garbage Collection, azaz a nem használt objektumok kisöprése a memóriából, több stratégiával is megközelíthető. A naiv implementációnak tartott referencia-számlálás a körkörös referenciák miatt nem elég jól használható. A virtuális gép azokat az objektumokat takarítja ki, amelyek már nem érhetőek el valamilyen futó szálból amelyhez több egyszerűsítő technológiát is alkalmaz. A két legfontosabb:

  • A fiatalabb objektumok hamarabb megszűnnek, így ezeket külön tárolja, és gyorsan tudja takarítani.
  • A program futásával párhuzamosan több szálon is futhat garbage collection, amely nem akasztja meg a virtuális gép működését addig, amíg végig nem nézi a szálakat.

Milyen mérések támasztják ezt alá?

Java vs C++ összehasonlítás

  • Java és C++ implementáció-azonos algoritmusok vizsgálata a BME-n

    Olyan algoritmusokat vizsgáltunk, amely ugyanolyan módon implementálható Javaban és C++-ban, így a mérés a fordítás és optimalizálás minőségét hasonlítja össze. Az eredmények alapján a Java teljesítménye -15% és +5% között van a C++-os alkalmazáshoz képest.
Az oldal támogatója: Sun Microsystems Kft.