Zajímala by mě jedna věc – kolikpak tak „sežeře“ program Hello World paměti běžící na v sunovské JRE? Zajímavé by jistě bylo porovnat jednotlivé verze. Pojďme se podívat, jak jsem pochodil na 32bitovém systému Windows XP.
Kód tohoto, ehm, „testovacího“ programu je následující.
public class MemoryTest { public static void main(String[] args) throws java.lang.InterruptedException { System.out.println("Hit Control+C to interrupt..."); Thread.sleep(12345678); } }
Kód byl zkompilován nejnižší verzí kompilátoru z dané JDK. Testovány byly JRE z JDK, nikoliv ty systémové (ty co jsou v „Program Files“). Z testů raději nebudu dělat žádné závěry či analýzy, prostě mě to jen zajímalo.
Nejprve jsem otestoval implicitní paměťové nastavení JRE. Byl spušťěn program, chvíli jsem sledoval spotřebu paměti daného procesu java.exe a poté jsem test opakoval. Výsledky zapsal do tabulky:
| Verze JRE | Spotřeba | |
| 1.4.2_15-b02 | 5880 kB | |
| 1.5.0_12-b04 | 6824 kB | |
| 1.6.0_03-b05 | 8312 kB | |
Spotřeba nám vidno roste s každou novou verzí.
Dvěma špinavými triky (-Xms1025k -Xss32k) jsem se pokusil spotřebu ještě o chloupek srazit, ale příliš jsem si nepomohl a v jednom případě to dopadlo tak, že jsem si pohoršil.
| Verze JRE | Spotřeba | Úspora | |
| 1.4.2_15-b02 | 5876 kB | 4 kB | |
| 1.5.0_12-b04 | 6848 kB | -24 kB | |
| 1.6.0_03-b05 | 8300 kB | 12 kB | |
Co z toho plyne? S každou novou major verzí Javy si vezme „jádro“ JRE o megabajt více paměti. Není to hrozné a při dnešní ceně a dostupnosti pamětí jsou to rozumná čísla. Být vývojářem určitě bych se příliš neupínal na nějakou optimalizaci v této konkrétní věci, ale soustředil bych síly hlavně na sdílení stejných dat v paměti mezi instancemi JRE (například jádro + rt.jar a podobně).