2015-04-27 8 views
5

Chciałbym wiedzieć, co to jest korzystanie z sun.misc.unsafe.arrayIndexScale w javadoc jest powiedziane, że:Co oznacza wartość zwrócona przez arrayIndexScale?

Zgłoś współczynnik skali dla adresowania elementów w alokacji pamięci danej klasy Array . Jednak tablice typów "wąskich" zwykle nie będą działać poprawnie z akcesoriami takimi jak getByte(java.lang.Object,int), więc współczynnik skali dla takich klas jest podawany jako zero.

Ta metoda zwraca wartość int, ale nie jestem pewien, co oznacza wartość.

+0

Nie sądzę, że jest to przeznaczone do ogólnego użytku. –

+2

Oczywiście nie jest to przeznaczone, jest * niebezpieczne * z jakiegoś powodu :) To jednak nie sprawia, że ​​jest to złe pytanie. – meskobalazs

+0

dlaczego używasz czegoś z pakietu 'sun. *', Te nie mają być publiczne! ** Nie powinieneś używać tych klas, szczególnie gdy musisz zadawać takie pytania. ** –

Odpowiedz

2

Ta metoda udostępnia informacje o układzie pamięci obiektu Java.

Służy do określania ilości pamięci zajmowanej przez daną tablicę. Współczynnik skali jest określeniem określającym, ile danej wielkości, w tym przypadku pamięci, jest pomnożone przez to, aby reprezentować sumę. Nie powinieneś używać metody, której próbujesz użyć; jest UNSAFE.

Jednak istnieją bezpieczniejsze wersje, które można użyć: staticFieldBase lub staticFieldOffset.

+0

Czy możesz wyjaśnić związek między 'arrayIndexScale',' staticFieldBase' i 'staticFieldOffset'? –