V Jave je rýchlejšia správa pamäte ako v C++!

Prvé verzie Java Virtual Machine (JVM) boli postavené na rovnakej organizácií pamäte ako v C++. Bol to veľmi neefektívny prístup. Tvrdím, že „správa pamäte v Jave je rýchlejšia ako v  C++.“ A na základe čoho?

Správa pamäte v C++

V C++ na alokovanie nového objektu (operátor new) bolo treba nájsť nové miesto na binárnom strome alebo halde (heap). Halda je binárny strom, kde minimum je úplne hore. V halde sa minimum dá nájsť konštantnou rýchlosťou – okamžite. Informácie o voľných blokoch v pamäti boli v prípade C++ usporiadané práve na halde. Keď bolo treba alokovať nový objekt (cez operátor new) pamäte, našla sa najmenšia možná pamäť (vrchol haldy), na ktorej sa to dalo alokovať a použila sa. Vrchol haldy sa vyhodil. Bolo to celkom efektívne, lebo manipulácia haldy má celkom dobrú rýchlostnú zložitosť. Bolo to dobré aj preto, lebo sa najprv zaberali malé bloky pamäte.

Správa pamäte v Jave

V Jave to takto nefunguje, je to prefíkanejšie J V Jave si urobili štatistiku životného cyklu objektu. Sledovali, ako objekty vznikajú a ako zanikajú. Zistili, že objekty, ktoré sú mladé majú veľkú šancu, že skoro zaniknú. Iba málo z nových objektov prežije dlhšie obdobie. Ako vojaci v druhej svetovej vojne. Skúsení ostávali, ale nováčikovia umierali. Zaviedli Generačný Garbage Collector (GCC). CGC si pamäť rozdelí na niekoľko generácií, napr. štyri. Keď sa alokujú objekty, tak sa sypú za sebou – bezhlavo jeden za druhým. V C++ alokovanie nového objektu znamená reorganizovať haldu preto, aby sa zabral najmenší blok. Na rozdiel od C++, v Jave sa na alokuje objekt konštantnou zložitosťou. Suma sumárom, vytvorenie nového objektu cez operátor new nestojí veľa úsilia.

Ako začať programovať?

Úvod do programovania pre každého bez prechádzajúcich znalostí.

Stiahnite so náš ebook teraz výnimočne zdarma!!!

Viac informacií preberáme na kurze:

Kurz JAVASE1 - Programovanie v JAVA SE: Syntax Jazyka JAVA

Marián Knězek

 

Súvisiace články: