Czy model pamięci Dalvika jest taki sam jak Java's? Szczególnie interesuje mnie to, czy odczyty i zapisy zmiennych podstawowych i nie-long
/non- są atomowe, ale chciałbym też wiedzieć, czy istnieją różnice między modelami pamięci obu platform.Czy model pamięci Dalvika jest taki sam jak język Java?
Odpowiedz
Począwszy od wersji 4.0 (Ice Cream Sandwich) zachowanie Dalvik powinno być zgodne z JSR-133 (model pamięci Java).
Od wersji 3.0 (plaster miodu) większość elementów była na miejscu, ale pomijano pewne drobne rzeczy, które trudno byłoby napotkać w praktyce (na przykład w niektórych przypadkach w finalizacji).
Od wersji 2.3 (Gingerbread) Dalvik był ogólnie poprawny na procesorach jednoprocesorowych, ale brakowało niektórych kluczowych funkcji wymaganych do prawidłowego działania na sprzęcie SMP (na przykład właściwej obsługi pola final
).
Pre-Gingerbread, nie było żadnych barier pamięci i podstawowe rzeczy, takie jak volatile long
zostały zerwane.
W specyfikacji podano, że wszystkie operacje na liczbach 32-bitowych (nie podwójne, nie długie) są atomowe. Nie ma gwarancji, że operacje na liczbach 64-bitowych są również atomowe.
Która to specyfikacja? Jeśli masz na myśli specyfikację Java, myślę, że chodzi o pytanie, czy Dalvik implementuje tę część semantyki Javy. Jeśli masz na myśli jakąś inną specyfikację, nny szansa na link? –
Jest a document in the Dalvik source który mówi:
Z punktu widzenia kawałek kodu napisanego w języku programowania Java lub ukierunkowane w taki sam sposób do .class plików, zostanie Dalvik VM ma zachowywać się w sposób w pełni zgodny z definicją języka. Oznacza to, że kod działający w Dalvik będzie zachowywał się tak samo, jak by działał w dowolnej innej maszynie wirtualnej.
Co powinno oznaczać, że zachowanie jest takie samo, jak w odpowiedniej Java. Niezależnie od tego, czy tak jest, czy nie, nie mam pojęcia.
- 1. Java 7 Model pamięci taki sam jak JSR-133?
- 2. Czy dp jest taki sam jak dip?
- 3. Czy LinqToSQL jest taki sam jak Linq?
- 4. Czy R.layout.listview jest taki sam jak R.id.listview
- 5. Czy rozmiar znaku * jest taki sam jak rozmiar int *?
- 6. Czy kontroler nadzorujący MVC i MVP jest taki sam?
- 7. Czy program Python Decorator jest taki sam jak adnotacja Java lub Java z aspektami?
- 8. Czy int jest taki sam jak niepodpisany lub podpisany?
- 9. Czy $ PROGRAM_NAME jest taki sam jak 0 rubinów?
- 10. Czy AppendHeader jest dokładnie taki sam jak AddHeader?
- 11. Czy asynchroniczny w C# jest taki sam jak w F #?
- 12. Czy Mallocator Stephena Lavaveja jest taki sam w C++ 11?
- 13. Czy JVM OpenJDK jest taki sam, jak JVM Oracle Java SE?
- 14. W konstrukcji kompilatora symbol jest taki sam jak tokena?
- 15. Makro powtórzyć prawie taki sam kod
- 16. Sprawdź, czy dwa ciągi mają taki sam wzorzec powtarzanych znaków.
- 17. Taki sam .vimrc, dwa różne komputery
- 18. Dlaczego mój HTTP_USER_AGENT nie zawsze jest taki sam?
- 19. Czy jest zagwarantowane, że typ T [x] [y] ma taki sam układ pamięci co T [x * y] w C?
- 20. Czy możliwe jest rozszerzenie ControlTemplate w taki sam sposób, jak rozszerzenie stylu w WPF?
- 21. W języku C, jest warunek: "if (a! = NULL)" taki sam jak warunek "if (a)"?
- 22. Jak zachować układ debugowania taki sam jak układ pulpitu?
- 23. Czy zmienne słowo kluczowe C# i java zachowuje się w taki sam sposób?
- 24. Czy Java (swing) ma taki przycisk?
- 25. Dlaczego Alt Gr ma taki sam kod klucza jak Ctrl?
- 26. Model pamięci w Ruby
- 27. Dlaczego "Brak" ma taki sam efekt jak "np.newaxis"?
- 28. Czy UIPageControl jest bezużyteczny sam?
- 29. Wbudowany analog CouchDB, taki sam jak sqlite dla SQL Server
- 30. Czy intellij może organizować import w taki sam sposób jak w Eclipse?
Gdzie przeczytałeś tę informację? –
Pracuję nad Dalvik. – fadden
Niejasne powiązania: Android + SMP Primer pod adresem http://developer.android.com/training/articles/smp.html – fadden