2011-01-03 6 views

risposta

58

A partire da 4.0 (Ice Cream Sandwich), il comportamento di Dalvik deve corrispondere a JSR-133 (il modello di memoria Java).

A partire da 3.0 (Honeycomb), la maggior parte dei pezzi era a posto, ma alcune cose minori erano state trascurate che sarebbe stato difficile incontrare nella pratica (ad esempio alcuni casi limite nella finalizzazione).

A partire da 2.3 (Gingerbread), Dalvik era generalmente corretto sui processori uniprocessors, ma mancavano alcune funzionalità chiave necessarie per il corretto comportamento dell'hardware SMP (ad esempio la corretta gestione del campo final).

Pre-Gingerbread, non c'erano barriere di memoria, e roba di base come volatile long era rotta.

+7

Dove hai letto questa informazione? –

+62

Io lavoro su Dalvik. – fadden

+8

Correlato: Android + SMP Primer su http://developer.android.com/training/articles/smp.html – fadden

0

La specifica dice che tutte le operazioni su numeri a 32 bit (i numeri non-doppi, non lunghi) sono atomici. Non vi è alcuna garanzia che le operazioni su numeri a 64 bit siano atomiche.

+4

Quale specifica è questa? Se intendi la specifica Java, penso che il punto della domanda sia chiedersi se Dalvik implementa quella parte della semantica di Java. Se intendi qualche altra specifica, nn possibilità di un link? –

13

C'è a document in the Dalvik source che dice:

Dal punto di vista di un pezzo di codice scritto in linguaggio di programmazione Java o mirata allo stesso modo per .class file, la Dalvik VM mira a comportarsi in un modo pienamente coerente con la definizione della lingua. Cioè, il codice in esecuzione in Dalvik si comporterà come avrebbe funzionato in qualsiasi altra macchina virtuale.

Il che dovrebbe significare che il comportamento è lo stesso di Java corretto. Che sia effettivamente o no, non ne ho idea.

Problemi correlati