2015-04-27 2 views
5

Я хотел бы знать, что такое использование sun.misc.unsafe.arrayIndexScale, в javadoc говорится, что:Что означает значение, возвращаемое arrayIndexScale?

Отчет масштабный коэффициент для адресации элементов в распределении памяти данного класса массива , Однако массивы «узких» типов обычно не работают должным образом с аксессуарами, такими как getByte(java.lang.Object,int), поэтому масштабный коэффициент для таких классов сообщается как ноль.

Этот метод возвращает int, но я не уверен, что означает значение.

+0

Я не думаю, что это предназначено для общего использования. –

+2

Конечно, он не предназначен для этого, это * небезопасно * по какой-то причине :) Это, однако, не делает этот плохой вопрос. – meskobalazs

+0

Почему вы используете что-то из пакета 'sun. *', Это не предназначено для публичного просмотра! ** Вы не должны использовать эти классы, особенно если вам нужно задавать такие вопросы. ** –

ответ

2

Метод дает вам информацию о расположении памяти объекта Java.

Используется для определения объема памяти, занимаемой данным массивом. Масштабный коэффициент - это термин, который представляет, сколько заданной величины, в данном случае, памяти, умножается на общую сумму. Нельзя использовать метод, который вы пытаетесь использовать; это UNSAFE.

Однако, есть более безопасные варианты, которые вы можете использовать: staticFieldBase или staticFieldOffset.

+0

Можете ли вы объяснить взаимосвязь между 'arrayIndexScale',' staticFieldBase' и 'staticFieldOffset'? –

Смежные вопросы