Per allocare un'area di memoria nell'heap dalvik, le applicazioni utilizzano dlmalloc, invece del normale malloc, perché dlmalloc viene utilizzato e in che modo si differenzia da malloc. (Come noto, per allocare l'heap dalvik durante la creazione di dalvik VM, viene utilizzato malloc.)Differenza tra malloc e dlmalloc
risposta
Il bit di ordine elevato era che Dalvik aveva bisogno di avere un allocatore sottostante separato dall'heap predefinito gestito da malloc, quindi potrebbe avere il giusto tipo di controllo su come è avvenuta l'allocazione, sapendo che altri sottosistemi non interferirebbero.
Come si è scoperto, dlmalloc era una libreria esistente abbastanza matura che forniva l'isolamento e i ganci necessari. L'intento (fino al punto in cui ho lasciato la squadra) era che alla fine lo avremmo sostituito con qualcosa di più su misura, ma non è mai diventato un argomento sufficientemente urgente per fare quel particolare tuffo.
Per quanto riguarda le differenze dettagliate tra dlmalloc e malloc: dlmalloc è un'implementazione specifica della tradizionale libc malloc API, mentre "malloc" di per sé non è specifico per una particolare implementazione. Ma anche se sei diventato specifico, dubito che potrei suggerire qualcosa di più di "leggere il codice" comunque.
Ottima risposta, chiedendo se è possibile chiarire qualcosa - è dlmalloc usato come * the * malloc su Android, mantenendo pool separati in ogni processo per l'uso normale e per dalvik, oppure dalvik usa dlmalloc mentre altri call di malloc (in una jni lib o qualunque cosa) finiscono per usare qualcos'altro? –
- 1. Qualche differenza tra malloc e Marshal.AllocHGlobal?
- 2. Differenza tra tipo array e array allocati con malloc
- 3. Differenza tra LIST_HEAD_INIT e INIT_LIST_HEAD
- 4. Qual è la differenza tra "new" e "malloc" e "calloc" in C++?
- 5. malloc in sistemi embedded
- 6. Differenza tra stringa dichiarata e stringa allocata
- 7. La differenza tra $ * e $ @
- 8. Differenza tra $ # e $ {# @}
- 9. Differenza tra. e #
- 10. MySQL: Differenza tra ",", "e"
- 11. Differenza tra "o" e "||"
- 12. Differenza tra unwrapObservable e()
- 13. Differenza tra oggetto e *?
- 14. Differenza tra "**/* /" e "** /"?
- 15. Differenza tra jquery e $
- 16. CMake: differenza tra $ {} e "$ {}"
- 17. Differenza tra ". +" E ". +?"
- 18. VBA: Differenza tra & e +
- 19. Differenza tra numpy.logical_and e &
- 20. Differenza tra | = e^= css
- 21. Differenza tra `% in%` e `` ==
- 22. malloc() e memoria heap
- 23. Differenza tra array di caratteri e puntatore
- 24. Differenza tra Dizionario e Hashtable
- 25. Differenza tra SCM e SVN
- 26. differenza tra RDLC e SSRS
- 27. Differenza tra REMOTE_HOST e REMOTE_ADDR
- 28. Differenza tra "\ n" e Environment.NewLine
- 29. Differenza tra QSharedPointer e QSharedDataPointer?
- 30. Differenza tra toFixed() e toPrecision()?
Hai letto [l'articolo di wikipedia sull'allocazione della memoria] (http://en.wikipedia.org/wiki/C_dynamic_memory_allocation) e la sua sezione su dlmalloc? – gfour