java - funcionamiento - librerias nativas de android
¿Cuáles son las variables ''shadow $_klass_'' y ''shadow $_monitor_'' para en java.lang.Object? (1)
De hecho, están conectados a GC. Parece que se agregaron para apoyar los punteros de Brooks. He encontrado información sobre los punteros de Brooks here :
La idea es que cada objeto en el montón tenga un campo de referencia adicional. Este campo o bien apunta al objeto en sí o, tan pronto como el objeto se copia en una nueva ubicación, a esa nueva ubicación. Esto nos permitirá evacuar objetos simultáneamente con hilos mutadores.
Ver especialmente estos dos compromisos:
En la última actualización de Android (SDK 21), parece que se han agregado 2 nuevas variables a java.lang.Object:
private transient Class<?> shadow$_klass_;
private transient int shadow$_monitor_;
shadow$_monitor_
que shadow$_monitor_
se usa brevemente en hashCode()
:
public int hashCode() {
int lockWord = shadow$_monitor_;
final int lockWordMask = 0xC0000000; // Top 2 bits.
final int lockWordStateHash = 0x80000000; // Top 2 bits are value 2 (kStateHash).
if ((lockWord & lockWordMask) == lockWordStateHash) {
return lockWord & ~lockWordMask;
}
return System.identityHashCode(this);
}
Pero por lo demás no hay referencias a ellos. ¿Están de alguna manera relacionados con GC en ART? ¿O algún tipo de cosas nativas?