2015-04-27 17 views
5

Vorrei sapere che cosa è l'utilizzo di sun.misc.unsafe.arrayIndexScale, nel javadoc si dice che:A cosa si riferisce il valore restituito da arrayIndexScale?

relazione il fattore di scala per affrontare gli elementi nell'assegnazione di una data classe array di storage . Tuttavia, gli array di tipi "stretti" generalmente non funzionano correttamente con gli accessor come getByte(java.lang.Object,int), quindi il fattore di scala per tali classi viene segnalato come zero.

Questo metodo restituisce un valore int, ma non sono sicuro del significato del valore.

+0

Non penso che questo sia inteso per uso generale. –

+2

Ovviamente non è pensato per questo, è * non sicuro * per una ragione :) Tuttavia, questa non è una cattiva domanda. – meskobalazs

+0

perché stai usando qualcosa da un pacchetto 'sun. *', Quelli non sono destinati ad essere pubblici! ** Non dovresti usare queste classi soprattutto se devi fare domande come questa. ** –

risposta

2

Il metodo fornisce informazioni sul layout della memoria dell'oggetto Java.

Viene utilizzato per determinare la quantità di memoria occupata dall'array specificato. Fattore di scala è un termine che rappresenta quanto una data quantità, in questo caso la memoria, viene moltiplicata per rappresentare il totale. Non si dovrebbe usare il metodo che si sta tentando di utilizzare; è UNSAFE.

Tuttavia, ci sono versioni più sicure che si possono utilizzare: staticFieldBase o staticFieldOffset.

+0

Puoi spiegare la relazione tra 'arrayIndexScale',' staticFieldBase' e ​​'staticFieldOffset'? –

Problemi correlati