tifyty

pure Java, what else ?

Kategória archívok: seni

Integer cache konfigurálható. De miért billeg?

A korábbi Ez már tényleg … posztban megnéztük, hogy az Integer osztály betöltődéskor létrehoz 256 darab konstans Integer objektumot, és az autoboxing során ezt használja a -128 és 127 közötti int értékek konvertálására. Azt is megnéztük, hogy ez bizonyos esetekben lényeges sebességnövekedést hozhat. Mi a helyzet akkor, ha azt gondoljuk, hogy ez a sebességnövekedés még nagyobb is lehetne, ha ez a cache még nagyobb lenne? Mondjuk nem csak 127-ig tartalmazná a számokat, hanem akár 1000-ig.

A rövid válasz, hogy felejts el. You are doing it wrong. Olvasgasd a napi mi a f*sz cikkeit. Annyira hülyeség, ez a gondolat, hogy a kommentek egy részéről még azt sem lehet eldönteni, hogy komolyan gondolják-e.

Ennek azonban némileg ellent mond, hogy a Java fejlesztői nyitva hagytak egy lehetőséget, hogy ne csak 127-ig legyenek konstansok az Integer-ek. Ha a java.lang.Integer.IntegerCache.high értékét átállítjuk, hogy ne 127 legyen a felső limit a cache-elt Integer-ekre.

De miért csak a felső értéket lehet átállítani? Miért nem lehet az Integer osztályban egy static cache, ami -128 alatt is tárolja (cache-eli, pool-olja) az objektumokat?

A szavazásba bele sem mertem írni, hogy reflection-nel megoldható, hogy az alsó határ se -128 legyen. Még valaki képes lett volna arra szavazni.