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 JRESpotřeba
1.4.2_15-b025880 kB
1.5.0_12-b046824 kB
1.6.0_03-b058312 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 JRESpotřebaÚspora
1.4.2_15-b025876 kB4 kB
1.5.0_12-b046848 kB-24 kB
1.6.0_03-b058300 kB12 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ě).

Diskuze

If you can't read the letters on the image, download this .wav file to get them read to you.
pridej.cz
blog/hello_world_test_pameti_v_jave.txt · Poslední úprava: 29.05.2008 09:04 (external edit)
Creative Commons License Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0