Condivisione della tecnologia

Quanto è grande lo stack di un thread in Android? Dov'è ambientato?

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

In Android, la dimensione dello stack di un thread può variare a seconda delle diverse versioni di Android e dei tipi di thread (ad esempio thread principale e thread figlio). Quella che segue è una risposta dettagliata alla dimensione di uno stack di thread in Android e come impostarla:

Dimensioni dello stack di thread

  1. Dimensioni dello stack del thread principale
    • Per impostazione predefinita, la dimensione dello stack del thread principale di Android è solitamente8 MB . Questo è lo spazio dello stack iniziale allocato dal sistema al thread principale, utilizzato per archiviare informazioni come il processo di chiamata del metodo, le variabili locali e gli stack di operandi.
  2. Dimensioni dello stack del thread figlio
    • La dimensione dello stack del thread figlio è relativamente piccola e la dimensione specifica dipende dalla versione di Android.Ad esempio, in Android 6.0/7.0, la dimensione dello stack di un thread figlio (inclusa l'area GUARD) è di circa1016KB;In Android 8.0, la dimensione dello stack del thread figlio (inclusa l'area GUARD) è approssimativamente1008KB; In Android 9.0 e versioni successive, la dimensione dello stack del thread figlio (esclusa l'area GUARD) è approssimativamente1008KB, ma la dimensione totale allocata da mmap (inclusi STACK e GUARD) lo è1012KBO1016KB

Imposta la dimensione dello stack di thread

In Android, puoi impostare la dimensione dello stack del thread chiamando le funzioni pertinenti della libreria del thread POSIX (pthread). Queste funzioni vengono solitamente utilizzate nel codice C o C, poiché molti dei meccanismi sottostanti di Android si basano su questi linguaggi.

  1. Funzione per impostare la dimensione dello stack del thread
    • pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize): Questa funzione viene utilizzata per impostare l'oggetto attributo threadattrdimensione dello stack instacksize
    • In usopthread_createPrima di creare un thread, devi chiamarepthread_attr_initInizializzare l'oggetto delle proprietà del thread e quindi utilizzarepthread_attr_setstacksizeImposta la dimensione dello stack e infine crea un thread utilizzando l'oggetto proprietà set.
  2. Codice d'esempio
     

    c

    #include