====== Hello World test paměti v Javě ====== 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. ===== Testovací program ===== 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. ===== Test s implicitním nastavením ===== 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í. ===== Pokus o minimum ===== 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ě). {{tag>java}} ~~DISCUSSION~~