Il modello di memoria di Dalvik è lo stesso di Java's? Sono particolarmente interessato a sapere se le letture e le scritture di riferimento e le variabili primitive non long
/non- double
siano atomiche, ma vorrei anche sapere se ci sono differenze tra i modelli di memoria delle due piattaforme.Il modello di memoria di Dalvik è uguale a quello di Java?
risposta
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.
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.
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? –
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.
- 1. Il file Java è uguale a
- 2. Java è uguale a() ordinare
- 3. È un int uguale a quello senza segno o firmato?
- 4. Java è uguale a una classe. == uguale a .equals
- 5. Scala e modello di memoria Java
- 6. Controllare a livello di codice un elemento nell'elenco di checkbox dove il testo è uguale a quello che voglio
- 7. Perché questo comportamento è consentito nel modello di memoria Java?
- 8. Implementazione del modello di memoria Java?
- 9. php non è uguale a non è uguale, uguale a
- 10. java.lang.Math.PI è uguale a M_PI di GCC?
- 11. Java: intero uguale a ==
- 12. Il flusso principale/dettaglio ha un livello minimo di API uguale a quello in uso
- 13. Memoria richiesta per campi "corti" in Dalvik?
- 14. IsBusy di BackgroundWorker è uguale a "IsAlive"?
- 15. Java richiede maggiore spazio mucchio di quello che è ragionevole
- 16. Modello di memoria Java: riordinamento e blocchi simultanei
- 17. Modello di fallback Java
- 18. Modello di memoria in Ruby
- 19. threading python: modello di memoria e visibilità
- 20. Il tempo costante è uguale a
- 21. In che modo il flusso di lavoro tipico di Git è paragonabile a quello di Mercurial?
- 22. modelli Meteor, controllare se il valore è uguale a stringa
- 23. L'ordine delle chiavi NSDictionary è uguale a quello inizializzato se non cambia mai?
- 24. Il modello di memoria Java si verifica prima delle interazioni del pool di thread
- 25. L'utente www-data è uguale a quello dell'utente apache sul sistema Centos
- 26. Riferimento su Dalvik o Java Virtual Machines?
- 27. Cosa è cambiato nel modello di memoria in .NET 4.5?
- 28. Nome memoria file di heap automatico di memoria esaurita Java
- 29. Modello di fabbrica, perdita di memoria
- 30. Scala: Fa == l'impostazione predefinita è uguale a?
Dove hai letto questa informazione? –
Io lavoro su Dalvik. – fadden
Correlato: Android + SMP Primer su http://developer.android.com/training/articles/smp.html – fadden